• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2    "version": "1.0",
3    "parameters": {
4        "KvsARN": {
5            "required": false,
6            "documentation": "The ARN of the Key Value Store",
7            "type": "String"
8        },
9        "Region": {
10            "builtIn": "AWS::Region",
11            "required": false,
12            "documentation": "The AWS region used to dispatch the request.",
13            "type": "String"
14        },
15        "UseFIPS": {
16            "builtIn": "AWS::UseFIPS",
17            "required": true,
18            "default": false,
19            "documentation": "When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.",
20            "type": "Boolean"
21        },
22        "Endpoint": {
23            "builtIn": "SDK::Endpoint",
24            "required": false,
25            "documentation": "Override the endpoint used to send this request",
26            "type": "String"
27        }
28    },
29    "rules": [
30        {
31            "conditions": [
32                {
33                    "fn": "booleanEquals",
34                    "argv": [
35                        {
36                            "ref": "UseFIPS"
37                        },
38                        false
39                    ]
40                }
41            ],
42            "rules": [
43                {
44                    "conditions": [
45                        {
46                            "fn": "isSet",
47                            "argv": [
48                                {
49                                    "ref": "KvsARN"
50                                }
51                            ]
52                        }
53                    ],
54                    "rules": [
55                        {
56                            "conditions": [
57                                {
58                                    "fn": "aws.parseArn",
59                                    "argv": [
60                                        {
61                                            "ref": "KvsARN"
62                                        }
63                                    ],
64                                    "assign": "parsedArn"
65                                }
66                            ],
67                            "rules": [
68                                {
69                                    "conditions": [
70                                        {
71                                            "fn": "stringEquals",
72                                            "argv": [
73                                                {
74                                                    "fn": "getAttr",
75                                                    "argv": [
76                                                        {
77                                                            "ref": "parsedArn"
78                                                        },
79                                                        "service"
80                                                    ]
81                                                },
82                                                "cloudfront"
83                                            ]
84                                        }
85                                    ],
86                                    "rules": [
87                                        {
88                                            "conditions": [
89                                                {
90                                                    "fn": "stringEquals",
91                                                    "argv": [
92                                                        {
93                                                            "fn": "getAttr",
94                                                            "argv": [
95                                                                {
96                                                                    "ref": "parsedArn"
97                                                                },
98                                                                "region"
99                                                            ]
100                                                        },
101                                                        ""
102                                                    ]
103                                                }
104                                            ],
105                                            "rules": [
106                                                {
107                                                    "conditions": [
108                                                        {
109                                                            "fn": "getAttr",
110                                                            "argv": [
111                                                                {
112                                                                    "ref": "parsedArn"
113                                                                },
114                                                                "resourceId[0]"
115                                                            ],
116                                                            "assign": "arnType"
117                                                        }
118                                                    ],
119                                                    "rules": [
120                                                        {
121                                                            "conditions": [
122                                                                {
123                                                                    "fn": "not",
124                                                                    "argv": [
125                                                                        {
126                                                                            "fn": "stringEquals",
127                                                                            "argv": [
128                                                                                {
129                                                                                    "ref": "arnType"
130                                                                                },
131                                                                                ""
132                                                                            ]
133                                                                        }
134                                                                    ]
135                                                                }
136                                                            ],
137                                                            "rules": [
138                                                                {
139                                                                    "conditions": [
140                                                                        {
141                                                                            "fn": "stringEquals",
142                                                                            "argv": [
143                                                                                {
144                                                                                    "ref": "arnType"
145                                                                                },
146                                                                                "key-value-store"
147                                                                            ]
148                                                                        }
149                                                                    ],
150                                                                    "rules": [
151                                                                        {
152                                                                            "conditions": [
153                                                                                {
154                                                                                    "fn": "stringEquals",
155                                                                                    "argv": [
156                                                                                        {
157                                                                                            "fn": "getAttr",
158                                                                                            "argv": [
159                                                                                                {
160                                                                                                    "ref": "parsedArn"
161                                                                                                },
162                                                                                                "partition"
163                                                                                            ]
164                                                                                        },
165                                                                                        "aws"
166                                                                                    ]
167                                                                                }
168                                                                            ],
169                                                                            "rules": [
170                                                                                {
171                                                                                    "conditions": [
172                                                                                        {
173                                                                                            "fn": "isSet",
174                                                                                            "argv": [
175                                                                                                {
176                                                                                                    "ref": "Region"
177                                                                                                }
178                                                                                            ]
179                                                                                        }
180                                                                                    ],
181                                                                                    "rules": [
182                                                                                        {
183                                                                                            "conditions": [
184                                                                                                {
185                                                                                                    "fn": "aws.partition",
186                                                                                                    "argv": [
187                                                                                                        {
188                                                                                                            "ref": "Region"
189                                                                                                        }
190                                                                                                    ],
191                                                                                                    "assign": "partitionResult"
192                                                                                                }
193                                                                                            ],
194                                                                                            "rules": [
195                                                                                                {
196                                                                                                    "conditions": [
197                                                                                                        {
198                                                                                                            "fn": "stringEquals",
199                                                                                                            "argv": [
200                                                                                                                {
201                                                                                                                    "fn": "getAttr",
202                                                                                                                    "argv": [
203                                                                                                                        {
204                                                                                                                            "ref": "partitionResult"
205                                                                                                                        },
206                                                                                                                        "name"
207                                                                                                                    ]
208                                                                                                                },
209                                                                                                                "{parsedArn#partition}"
210                                                                                                            ]
211                                                                                                        }
212                                                                                                    ],
213                                                                                                    "rules": [
214                                                                                                        {
215                                                                                                            "conditions": [
216                                                                                                                {
217                                                                                                                    "fn": "isSet",
218                                                                                                                    "argv": [
219                                                                                                                        {
220                                                                                                                            "ref": "Endpoint"
221                                                                                                                        }
222                                                                                                                    ]
223                                                                                                                }
224                                                                                                            ],
225                                                                                                            "rules": [
226                                                                                                                {
227                                                                                                                    "conditions": [
228                                                                                                                        {
229                                                                                                                            "fn": "parseURL",
230                                                                                                                            "argv": [
231                                                                                                                                {
232                                                                                                                                    "ref": "Endpoint"
233                                                                                                                                }
234                                                                                                                            ],
235                                                                                                                            "assign": "url"
236                                                                                                                        }
237                                                                                                                    ],
238                                                                                                                    "rules": [
239                                                                                                                        {
240                                                                                                                            "conditions": [],
241                                                                                                                            "endpoint": {
242                                                                                                                                "url": "{url#scheme}://{parsedArn#accountId}.{url#authority}{url#path}",
243                                                                                                                                "properties": {
244                                                                                                                                    "authSchemes": [
245                                                                                                                                        {
246                                                                                                                                            "name": "sigv4a",
247                                                                                                                                            "signingName": "cloudfront-keyvaluestore",
248                                                                                                                                            "signingRegionSet": [
249                                                                                                                                                "*"
250                                                                                                                                            ]
251                                                                                                                                        }
252                                                                                                                                    ]
253                                                                                                                                },
254                                                                                                                                "headers": {}
255                                                                                                                            },
256                                                                                                                            "type": "endpoint"
257                                                                                                                        }
258                                                                                                                    ],
259                                                                                                                    "type": "tree"
260                                                                                                                },
261                                                                                                                {
262                                                                                                                    "conditions": [],
263                                                                                                                    "error": "Provided endpoint is not a valid URL",
264                                                                                                                    "type": "error"
265                                                                                                                }
266                                                                                                            ],
267                                                                                                            "type": "tree"
268                                                                                                        },
269                                                                                                        {
270                                                                                                            "conditions": [],
271                                                                                                            "endpoint": {
272                                                                                                                "url": "https://{parsedArn#accountId}.cloudfront-kvs.global.api.aws",
273                                                                                                                "properties": {
274                                                                                                                    "authSchemes": [
275                                                                                                                        {
276                                                                                                                            "name": "sigv4a",
277                                                                                                                            "signingName": "cloudfront-keyvaluestore",
278                                                                                                                            "signingRegionSet": [
279                                                                                                                                "*"
280                                                                                                                            ]
281                                                                                                                        }
282                                                                                                                    ]
283                                                                                                                },
284                                                                                                                "headers": {}
285                                                                                                            },
286                                                                                                            "type": "endpoint"
287                                                                                                        }
288                                                                                                    ],
289                                                                                                    "type": "tree"
290                                                                                                },
291                                                                                                {
292                                                                                                    "conditions": [],
293                                                                                                    "error": "Client was configured for partition `{partitionResult#name}` but Kvs ARN has `{parsedArn#partition}`",
294                                                                                                    "type": "error"
295                                                                                                }
296                                                                                            ],
297                                                                                            "type": "tree"
298                                                                                        }
299                                                                                    ],
300                                                                                    "type": "tree"
301                                                                                },
302                                                                                {
303                                                                                    "conditions": [
304                                                                                        {
305                                                                                            "fn": "isSet",
306                                                                                            "argv": [
307                                                                                                {
308                                                                                                    "ref": "Endpoint"
309                                                                                                }
310                                                                                            ]
311                                                                                        }
312                                                                                    ],
313                                                                                    "rules": [
314                                                                                        {
315                                                                                            "conditions": [
316                                                                                                {
317                                                                                                    "fn": "parseURL",
318                                                                                                    "argv": [
319                                                                                                        {
320                                                                                                            "ref": "Endpoint"
321                                                                                                        }
322                                                                                                    ],
323                                                                                                    "assign": "url"
324                                                                                                }
325                                                                                            ],
326                                                                                            "rules": [
327                                                                                                {
328                                                                                                    "conditions": [],
329                                                                                                    "endpoint": {
330                                                                                                        "url": "{url#scheme}://{parsedArn#accountId}.{url#authority}{url#path}",
331                                                                                                        "properties": {
332                                                                                                            "authSchemes": [
333                                                                                                                {
334                                                                                                                    "name": "sigv4a",
335                                                                                                                    "signingName": "cloudfront-keyvaluestore",
336                                                                                                                    "signingRegionSet": [
337                                                                                                                        "*"
338                                                                                                                    ]
339                                                                                                                }
340                                                                                                            ]
341                                                                                                        },
342                                                                                                        "headers": {}
343                                                                                                    },
344                                                                                                    "type": "endpoint"
345                                                                                                }
346                                                                                            ],
347                                                                                            "type": "tree"
348                                                                                        },
349                                                                                        {
350                                                                                            "conditions": [],
351                                                                                            "error": "Provided endpoint is not a valid URL",
352                                                                                            "type": "error"
353                                                                                        }
354                                                                                    ],
355                                                                                    "type": "tree"
356                                                                                },
357                                                                                {
358                                                                                    "conditions": [],
359                                                                                    "endpoint": {
360                                                                                        "url": "https://{parsedArn#accountId}.cloudfront-kvs.global.api.aws",
361                                                                                        "properties": {
362                                                                                            "authSchemes": [
363                                                                                                {
364                                                                                                    "name": "sigv4a",
365                                                                                                    "signingName": "cloudfront-keyvaluestore",
366                                                                                                    "signingRegionSet": [
367                                                                                                        "*"
368                                                                                                    ]
369                                                                                                }
370                                                                                            ]
371                                                                                        },
372                                                                                        "headers": {}
373                                                                                    },
374                                                                                    "type": "endpoint"
375                                                                                }
376                                                                            ],
377                                                                            "type": "tree"
378                                                                        },
379                                                                        {
380                                                                            "conditions": [],
381                                                                            "error": "CloudFront-KeyValueStore is not supported in partition `{parsedArn#partition}`",
382                                                                            "type": "error"
383                                                                        }
384                                                                    ],
385                                                                    "type": "tree"
386                                                                },
387                                                                {
388                                                                    "conditions": [],
389                                                                    "error": "ARN resource type is invalid. Expected `key-value-store`, found: `{arnType}`",
390                                                                    "type": "error"
391                                                                }
392                                                            ],
393                                                            "type": "tree"
394                                                        },
395                                                        {
396                                                            "conditions": [],
397                                                            "error": "No resource type found in the KVS ARN. Resource type must be `key-value-store`.",
398                                                            "type": "error"
399                                                        }
400                                                    ],
401                                                    "type": "tree"
402                                                },
403                                                {
404                                                    "conditions": [],
405                                                    "error": "No resource type found in the KVS ARN. Resource type must be `key-value-store`.",
406                                                    "type": "error"
407                                                }
408                                            ],
409                                            "type": "tree"
410                                        },
411                                        {
412                                            "conditions": [],
413                                            "error": "Provided ARN must be a global resource ARN. Found: `{parsedArn#region}`",
414                                            "type": "error"
415                                        }
416                                    ],
417                                    "type": "tree"
418                                },
419                                {
420                                    "conditions": [],
421                                    "error": "Provided ARN is not a valid CloudFront Service ARN. Found: `{parsedArn#service}`",
422                                    "type": "error"
423                                }
424                            ],
425                            "type": "tree"
426                        },
427                        {
428                            "conditions": [],
429                            "error": "KVS ARN must be a valid ARN",
430                            "type": "error"
431                        }
432                    ],
433                    "type": "tree"
434                },
435                {
436                    "conditions": [],
437                    "error": "KVS ARN must be provided to use this service",
438                    "type": "error"
439                }
440            ],
441            "type": "tree"
442        },
443        {
444            "conditions": [],
445            "error": "Invalid Configuration: FIPS is not supported with CloudFront-KeyValueStore.",
446            "type": "error"
447        }
448    ]
449}