1{
2    "version": "1.0",
3    "parameters": {
4        "Region": {
5            "builtIn": "AWS::Region",
6            "required": false,
7            "documentation": "The AWS region used to dispatch the request.",
8            "type": "String"
9        },
10        "UseFIPS": {
11            "builtIn": "AWS::UseFIPS",
12            "required": true,
13            "default": false,
14            "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.",
15            "type": "Boolean"
16        },
17        "UseDualStack": {
18            "builtIn": "AWS::UseDualStack",
19            "required": true,
20            "default": false,
21            "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.",
22            "type": "Boolean"
23        },
24        "Endpoint": {
25            "builtIn": "SDK::Endpoint",
26            "required": false,
27            "documentation": "Override the endpoint used to send this request",
28            "type": "String"
29        },
30        "AccountId": {
31            "required": false,
32            "documentation": "The Account ID used to send the request. This is an optional parameter that will be set automatically for operations that require it.",
33            "type": "String"
34        },
35        "RequiresAccountId": {
36            "required": false,
37            "documentation": "Internal parameter for operations that require account id host prefix.",
38            "type": "Boolean"
39        },
40        "OutpostId": {
41            "required": false,
42            "documentation": "The Outpost ID.  Some operations have an optional OutpostId which should be used in endpoint construction.",
43            "type": "String"
44        },
45        "Bucket": {
46            "required": false,
47            "documentation": "The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.",
48            "type": "String"
49        },
50        "AccessPointName": {
51            "required": false,
52            "documentation": "The S3 AccessPointName used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 AccessPoint.",
53            "type": "String"
54        },
55        "UseArnRegion": {
56            "builtIn": "AWS::S3Control::UseArnRegion",
57            "required": false,
58            "documentation": "When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.",
59            "type": "Boolean"
60        }
61    },
62    "rules": [
63        {
64            "conditions": [
65                {
66                    "fn": "isSet",
67                    "argv": [
68                        {
69                            "ref": "Region"
70                        }
71                    ]
72                }
73            ],
74            "rules": [
75                {
76                    "conditions": [
77                        {
78                            "fn": "stringEquals",
79                            "argv": [
80                                {
81                                    "ref": "Region"
82                                },
83                                "snow"
84                            ]
85                        },
86                        {
87                            "fn": "isSet",
88                            "argv": [
89                                {
90                                    "ref": "Endpoint"
91                                }
92                            ]
93                        },
94                        {
95                            "fn": "parseURL",
96                            "argv": [
97                                {
98                                    "ref": "Endpoint"
99                                }
100                            ],
101                            "assign": "url"
102                        }
103                    ],
104                    "rules": [
105                        {
106                            "conditions": [
107                                {
108                                    "fn": "aws.partition",
109                                    "argv": [
110                                        {
111                                            "ref": "Region"
112                                        }
113                                    ],
114                                    "assign": "partitionResult"
115                                }
116                            ],
117                            "rules": [
118                                {
119                                    "conditions": [
120                                        {
121                                            "fn": "booleanEquals",
122                                            "argv": [
123                                                {
124                                                    "ref": "UseDualStack"
125                                                },
126                                                true
127                                            ]
128                                        }
129                                    ],
130                                    "error": "S3 Snow does not support DualStack",
131                                    "type": "error"
132                                },
133                                {
134                                    "conditions": [
135                                        {
136                                            "fn": "booleanEquals",
137                                            "argv": [
138                                                {
139                                                    "ref": "UseFIPS"
140                                                },
141                                                true
142                                            ]
143                                        }
144                                    ],
145                                    "error": "S3 Snow does not support FIPS",
146                                    "type": "error"
147                                },
148                                {
149                                    "conditions": [],
150                                    "endpoint": {
151                                        "url": "{url#scheme}://{url#authority}",
152                                        "properties": {
153                                            "authSchemes": [
154                                                {
155                                                    "disableDoubleEncoding": true,
156                                                    "name": "sigv4",
157                                                    "signingName": "s3",
158                                                    "signingRegion": "{Region}"
159                                                }
160                                            ]
161                                        },
162                                        "headers": {}
163                                    },
164                                    "type": "endpoint"
165                                }
166                            ],
167                            "type": "tree"
168                        }
169                    ],
170                    "type": "tree"
171                },
172                {
173                    "conditions": [
174                        {
175                            "fn": "isSet",
176                            "argv": [
177                                {
178                                    "ref": "OutpostId"
179                                }
180                            ]
181                        }
182                    ],
183                    "rules": [
184                        {
185                            "conditions": [
186                                {
187                                    "fn": "aws.partition",
188                                    "argv": [
189                                        {
190                                            "ref": "Region"
191                                        }
192                                    ],
193                                    "assign": "partitionResult"
194                                }
195                            ],
196                            "rules": [
197                                {
198                                    "conditions": [
199                                        {
200                                            "fn": "booleanEquals",
201                                            "argv": [
202                                                {
203                                                    "ref": "UseFIPS"
204                                                },
205                                                true
206                                            ]
207                                        },
208                                        {
209                                            "fn": "stringEquals",
210                                            "argv": [
211                                                {
212                                                    "fn": "getAttr",
213                                                    "argv": [
214                                                        {
215                                                            "ref": "partitionResult"
216                                                        },
217                                                        "name"
218                                                    ]
219                                                },
220                                                "aws-cn"
221                                            ]
222                                        }
223                                    ],
224                                    "error": "Partition does not support FIPS",
225                                    "type": "error"
226                                },
227                                {
228                                    "conditions": [
229                                        {
230                                            "fn": "isSet",
231                                            "argv": [
232                                                {
233                                                    "ref": "RequiresAccountId"
234                                                }
235                                            ]
236                                        },
237                                        {
238                                            "fn": "booleanEquals",
239                                            "argv": [
240                                                {
241                                                    "ref": "RequiresAccountId"
242                                                },
243                                                true
244                                            ]
245                                        },
246                                        {
247                                            "fn": "not",
248                                            "argv": [
249                                                {
250                                                    "fn": "isSet",
251                                                    "argv": [
252                                                        {
253                                                            "ref": "AccountId"
254                                                        }
255                                                    ]
256                                                }
257                                            ]
258                                        }
259                                    ],
260                                    "error": "AccountId is required but not set",
261                                    "type": "error"
262                                },
263                                {
264                                    "conditions": [
265                                        {
266                                            "fn": "isSet",
267                                            "argv": [
268                                                {
269                                                    "ref": "AccountId"
270                                                }
271                                            ]
272                                        },
273                                        {
274                                            "fn": "not",
275                                            "argv": [
276                                                {
277                                                    "fn": "isValidHostLabel",
278                                                    "argv": [
279                                                        {
280                                                            "ref": "AccountId"
281                                                        },
282                                                        false
283                                                    ]
284                                                }
285                                            ]
286                                        }
287                                    ],
288                                    "error": "AccountId must only contain a-z, A-Z, 0-9 and `-`.",
289                                    "type": "error"
290                                },
291                                {
292                                    "conditions": [
293                                        {
294                                            "fn": "not",
295                                            "argv": [
296                                                {
297                                                    "fn": "isValidHostLabel",
298                                                    "argv": [
299                                                        {
300                                                            "ref": "OutpostId"
301                                                        },
302                                                        false
303                                                    ]
304                                                }
305                                            ]
306                                        }
307                                    ],
308                                    "error": "OutpostId must only contain a-z, A-Z, 0-9 and `-`.",
309                                    "type": "error"
310                                },
311                                {
312                                    "conditions": [
313                                        {
314                                            "fn": "isSet",
315                                            "argv": [
316                                                {
317                                                    "ref": "Endpoint"
318                                                }
319                                            ]
320                                        },
321                                        {
322                                            "fn": "booleanEquals",
323                                            "argv": [
324                                                {
325                                                    "ref": "UseDualStack"
326                                                },
327                                                true
328                                            ]
329                                        }
330                                    ],
331                                    "error": "Invalid Configuration: DualStack and custom endpoint are not supported",
332                                    "type": "error"
333                                },
334                                {
335                                    "conditions": [
336                                        {
337                                            "fn": "isValidHostLabel",
338                                            "argv": [
339                                                {
340                                                    "ref": "Region"
341                                                },
342                                                true
343                                            ]
344                                        }
345                                    ],
346                                    "rules": [
347                                        {
348                                            "conditions": [
349                                                {
350                                                    "fn": "isSet",
351                                                    "argv": [
352                                                        {
353                                                            "ref": "Endpoint"
354                                                        }
355                                                    ]
356                                                },
357                                                {
358                                                    "fn": "parseURL",
359                                                    "argv": [
360                                                        {
361                                                            "ref": "Endpoint"
362                                                        }
363                                                    ],
364                                                    "assign": "url"
365                                                }
366                                            ],
367                                            "endpoint": {
368                                                "url": "{url#scheme}://{url#authority}{url#path}",
369                                                "properties": {
370                                                    "authSchemes": [
371                                                        {
372                                                            "disableDoubleEncoding": true,
373                                                            "name": "sigv4",
374                                                            "signingName": "s3-outposts",
375                                                            "signingRegion": "{Region}"
376                                                        }
377                                                    ]
378                                                },
379                                                "headers": {}
380                                            },
381                                            "type": "endpoint"
382                                        },
383                                        {
384                                            "conditions": [
385                                                {
386                                                    "fn": "booleanEquals",
387                                                    "argv": [
388                                                        {
389                                                            "ref": "UseFIPS"
390                                                        },
391                                                        true
392                                                    ]
393                                                },
394                                                {
395                                                    "fn": "booleanEquals",
396                                                    "argv": [
397                                                        {
398                                                            "ref": "UseDualStack"
399                                                        },
400                                                        true
401                                                    ]
402                                                }
403                                            ],
404                                            "endpoint": {
405                                                "url": "https://s3-outposts-fips.{Region}.{partitionResult#dualStackDnsSuffix}",
406                                                "properties": {
407                                                    "authSchemes": [
408                                                        {
409                                                            "disableDoubleEncoding": true,
410                                                            "name": "sigv4",
411                                                            "signingName": "s3-outposts",
412                                                            "signingRegion": "{Region}"
413                                                        }
414                                                    ]
415                                                },
416                                                "headers": {}
417                                            },
418                                            "type": "endpoint"
419                                        },
420                                        {
421                                            "conditions": [
422                                                {
423                                                    "fn": "booleanEquals",
424                                                    "argv": [
425                                                        {
426                                                            "ref": "UseFIPS"
427                                                        },
428                                                        true
429                                                    ]
430                                                }
431                                            ],
432                                            "endpoint": {
433                                                "url": "https://s3-outposts-fips.{Region}.{partitionResult#dnsSuffix}",
434                                                "properties": {
435                                                    "authSchemes": [
436                                                        {
437                                                            "disableDoubleEncoding": true,
438                                                            "name": "sigv4",
439                                                            "signingName": "s3-outposts",
440                                                            "signingRegion": "{Region}"
441                                                        }
442                                                    ]
443                                                },
444                                                "headers": {}
445                                            },
446                                            "type": "endpoint"
447                                        },
448                                        {
449                                            "conditions": [
450                                                {
451                                                    "fn": "booleanEquals",
452                                                    "argv": [
453                                                        {
454                                                            "ref": "UseDualStack"
455                                                        },
456                                                        true
457                                                    ]
458                                                }
459                                            ],
460                                            "endpoint": {
461                                                "url": "https://s3-outposts.{Region}.{partitionResult#dualStackDnsSuffix}",
462                                                "properties": {
463                                                    "authSchemes": [
464                                                        {
465                                                            "disableDoubleEncoding": true,
466                                                            "name": "sigv4",
467                                                            "signingName": "s3-outposts",
468                                                            "signingRegion": "{Region}"
469                                                        }
470                                                    ]
471                                                },
472                                                "headers": {}
473                                            },
474                                            "type": "endpoint"
475                                        },
476                                        {
477                                            "conditions": [],
478                                            "endpoint": {
479                                                "url": "https://s3-outposts.{Region}.{partitionResult#dnsSuffix}",
480                                                "properties": {
481                                                    "authSchemes": [
482                                                        {
483                                                            "disableDoubleEncoding": true,
484                                                            "name": "sigv4",
485                                                            "signingName": "s3-outposts",
486                                                            "signingRegion": "{Region}"
487                                                        }
488                                                    ]
489                                                },
490                                                "headers": {}
491                                            },
492                                            "type": "endpoint"
493                                        }
494                                    ],
495                                    "type": "tree"
496                                },
497                                {
498                                    "conditions": [],
499                                    "error": "Invalid region: region was not a valid DNS name.",
500                                    "type": "error"
501                                }
502                            ],
503                            "type": "tree"
504                        }
505                    ],
506                    "type": "tree"
507                },
508                {
509                    "conditions": [
510                        {
511                            "fn": "isSet",
512                            "argv": [
513                                {
514                                    "ref": "AccessPointName"
515                                }
516                            ]
517                        },
518                        {
519                            "fn": "aws.parseArn",
520                            "argv": [
521                                {
522                                    "ref": "AccessPointName"
523                                }
524                            ],
525                            "assign": "accessPointArn"
526                        }
527                    ],
528                    "rules": [
529                        {
530                            "conditions": [
531                                {
532                                    "fn": "getAttr",
533                                    "argv": [
534                                        {
535                                            "ref": "accessPointArn"
536                                        },
537                                        "resourceId[0]"
538                                    ],
539                                    "assign": "arnType"
540                                },
541                                {
542                                    "fn": "not",
543                                    "argv": [
544                                        {
545                                            "fn": "stringEquals",
546                                            "argv": [
547                                                {
548                                                    "ref": "arnType"
549                                                },
550                                                ""
551                                            ]
552                                        }
553                                    ]
554                                }
555                            ],
556                            "rules": [
557                                {
558                                    "conditions": [
559                                        {
560                                            "fn": "stringEquals",
561                                            "argv": [
562                                                {
563                                                    "fn": "getAttr",
564                                                    "argv": [
565                                                        {
566                                                            "ref": "accessPointArn"
567                                                        },
568                                                        "service"
569                                                    ]
570                                                },
571                                                "s3-outposts"
572                                            ]
573                                        }
574                                    ],
575                                    "rules": [
576                                        {
577                                            "conditions": [
578                                                {
579                                                    "fn": "getAttr",
580                                                    "argv": [
581                                                        {
582                                                            "ref": "accessPointArn"
583                                                        },
584                                                        "resourceId[1]"
585                                                    ],
586                                                    "assign": "outpostId"
587                                                }
588                                            ],
589                                            "rules": [
590                                                {
591                                                    "conditions": [
592                                                        {
593                                                            "fn": "isValidHostLabel",
594                                                            "argv": [
595                                                                {
596                                                                    "ref": "outpostId"
597                                                                },
598                                                                false
599                                                            ]
600                                                        }
601                                                    ],
602                                                    "rules": [
603                                                        {
604                                                            "conditions": [
605                                                                {
606                                                                    "fn": "isSet",
607                                                                    "argv": [
608                                                                        {
609                                                                            "ref": "Endpoint"
610                                                                        }
611                                                                    ]
612                                                                },
613                                                                {
614                                                                    "fn": "booleanEquals",
615                                                                    "argv": [
616                                                                        {
617                                                                            "ref": "UseDualStack"
618                                                                        },
619                                                                        true
620                                                                    ]
621                                                                }
622                                                            ],
623                                                            "error": "Invalid Configuration: DualStack and custom endpoint are not supported",
624                                                            "type": "error"
625                                                        },
626                                                        {
627                                                            "conditions": [
628                                                                {
629                                                                    "fn": "isSet",
630                                                                    "argv": [
631                                                                        {
632                                                                            "ref": "UseArnRegion"
633                                                                        }
634                                                                    ]
635                                                                },
636                                                                {
637                                                                    "fn": "booleanEquals",
638                                                                    "argv": [
639                                                                        {
640                                                                            "ref": "UseArnRegion"
641                                                                        },
642                                                                        false
643                                                                    ]
644                                                                },
645                                                                {
646                                                                    "fn": "not",
647                                                                    "argv": [
648                                                                        {
649                                                                            "fn": "stringEquals",
650                                                                            "argv": [
651                                                                                {
652                                                                                    "fn": "getAttr",
653                                                                                    "argv": [
654                                                                                        {
655                                                                                            "ref": "accessPointArn"
656                                                                                        },
657                                                                                        "region"
658                                                                                    ]
659                                                                                },
660                                                                                "{Region}"
661                                                                            ]
662                                                                        }
663                                                                    ]
664                                                                }
665                                                            ],
666                                                            "error": "Invalid configuration: region from ARN `{accessPointArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",
667                                                            "type": "error"
668                                                        },
669                                                        {
670                                                            "conditions": [
671                                                                {
672                                                                    "fn": "aws.partition",
673                                                                    "argv": [
674                                                                        {
675                                                                            "ref": "Region"
676                                                                        }
677                                                                    ],
678                                                                    "assign": "partitionResult"
679                                                                }
680                                                            ],
681                                                            "rules": [
682                                                                {
683                                                                    "conditions": [
684                                                                        {
685                                                                            "fn": "aws.partition",
686                                                                            "argv": [
687                                                                                {
688                                                                                    "fn": "getAttr",
689                                                                                    "argv": [
690                                                                                        {
691                                                                                            "ref": "accessPointArn"
692                                                                                        },
693                                                                                        "region"
694                                                                                    ]
695                                                                                }
696                                                                            ],
697                                                                            "assign": "arnPartition"
698                                                                        }
699                                                                    ],
700                                                                    "rules": [
701                                                                        {
702                                                                            "conditions": [
703                                                                                {
704                                                                                    "fn": "stringEquals",
705                                                                                    "argv": [
706                                                                                        {
707                                                                                            "fn": "getAttr",
708                                                                                            "argv": [
709                                                                                                {
710                                                                                                    "ref": "arnPartition"
711                                                                                                },
712                                                                                                "name"
713                                                                                            ]
714                                                                                        },
715                                                                                        {
716                                                                                            "fn": "getAttr",
717                                                                                            "argv": [
718                                                                                                {
719                                                                                                    "ref": "partitionResult"
720                                                                                                },
721                                                                                                "name"
722                                                                                            ]
723                                                                                        }
724                                                                                    ]
725                                                                                }
726                                                                            ],
727                                                                            "rules": [
728                                                                                {
729                                                                                    "conditions": [
730                                                                                        {
731                                                                                            "fn": "isValidHostLabel",
732                                                                                            "argv": [
733                                                                                                {
734                                                                                                    "fn": "getAttr",
735                                                                                                    "argv": [
736                                                                                                        {
737                                                                                                            "ref": "accessPointArn"
738                                                                                                        },
739                                                                                                        "region"
740                                                                                                    ]
741                                                                                                },
742                                                                                                true
743                                                                                            ]
744                                                                                        }
745                                                                                    ],
746                                                                                    "rules": [
747                                                                                        {
748                                                                                            "conditions": [
749                                                                                                {
750                                                                                                    "fn": "not",
751                                                                                                    "argv": [
752                                                                                                        {
753                                                                                                            "fn": "stringEquals",
754                                                                                                            "argv": [
755                                                                                                                {
756                                                                                                                    "fn": "getAttr",
757                                                                                                                    "argv": [
758                                                                                                                        {
759                                                                                                                            "ref": "accessPointArn"
760                                                                                                                        },
761                                                                                                                        "accountId"
762                                                                                                                    ]
763                                                                                                                },
764                                                                                                                ""
765                                                                                                            ]
766                                                                                                        }
767                                                                                                    ]
768                                                                                                }
769                                                                                            ],
770                                                                                            "rules": [
771                                                                                                {
772                                                                                                    "conditions": [
773                                                                                                        {
774                                                                                                            "fn": "isValidHostLabel",
775                                                                                                            "argv": [
776                                                                                                                {
777                                                                                                                    "fn": "getAttr",
778                                                                                                                    "argv": [
779                                                                                                                        {
780                                                                                                                            "ref": "accessPointArn"
781                                                                                                                        },
782                                                                                                                        "accountId"
783                                                                                                                    ]
784                                                                                                                },
785                                                                                                                false
786                                                                                                            ]
787                                                                                                        }
788                                                                                                    ],
789                                                                                                    "rules": [
790                                                                                                        {
791                                                                                                            "conditions": [
792                                                                                                                {
793                                                                                                                    "fn": "isSet",
794                                                                                                                    "argv": [
795                                                                                                                        {
796                                                                                                                            "ref": "AccountId"
797                                                                                                                        }
798                                                                                                                    ]
799                                                                                                                },
800                                                                                                                {
801                                                                                                                    "fn": "not",
802                                                                                                                    "argv": [
803                                                                                                                        {
804                                                                                                                            "fn": "stringEquals",
805                                                                                                                            "argv": [
806                                                                                                                                {
807                                                                                                                                    "ref": "AccountId"
808                                                                                                                                },
809                                                                                                                                "{accessPointArn#accountId}"
810                                                                                                                            ]
811                                                                                                                        }
812                                                                                                                    ]
813                                                                                                                }
814                                                                                                            ],
815                                                                                                            "error": "Invalid ARN: the accountId specified in the ARN (`{accessPointArn#accountId}`) does not match the parameter (`{AccountId}`)",
816                                                                                                            "type": "error"
817                                                                                                        },
818                                                                                                        {
819                                                                                                            "conditions": [
820                                                                                                                {
821                                                                                                                    "fn": "getAttr",
822                                                                                                                    "argv": [
823                                                                                                                        {
824                                                                                                                            "ref": "accessPointArn"
825                                                                                                                        },
826                                                                                                                        "resourceId[2]"
827                                                                                                                    ],
828                                                                                                                    "assign": "outpostType"
829                                                                                                                }
830                                                                                                            ],
831                                                                                                            "rules": [
832                                                                                                                {
833                                                                                                                    "conditions": [
834                                                                                                                        {
835                                                                                                                            "fn": "getAttr",
836                                                                                                                            "argv": [
837                                                                                                                                {
838                                                                                                                                    "ref": "accessPointArn"
839                                                                                                                                },
840                                                                                                                                "resourceId[3]"
841                                                                                                                            ],
842                                                                                                                            "assign": "accessPointName"
843                                                                                                                        }
844                                                                                                                    ],
845                                                                                                                    "rules": [
846                                                                                                                        {
847                                                                                                                            "conditions": [
848                                                                                                                                {
849                                                                                                                                    "fn": "stringEquals",
850                                                                                                                                    "argv": [
851                                                                                                                                        {
852                                                                                                                                            "ref": "outpostType"
853                                                                                                                                        },
854                                                                                                                                        "accesspoint"
855                                                                                                                                    ]
856                                                                                                                                }
857                                                                                                                            ],
858                                                                                                                            "rules": [
859                                                                                                                                {
860                                                                                                                                    "conditions": [
861                                                                                                                                        {
862                                                                                                                                            "fn": "booleanEquals",
863                                                                                                                                            "argv": [
864                                                                                                                                                {
865                                                                                                                                                    "ref": "UseFIPS"
866                                                                                                                                                },
867                                                                                                                                                true
868                                                                                                                                            ]
869                                                                                                                                        },
870                                                                                                                                        {
871                                                                                                                                            "fn": "booleanEquals",
872                                                                                                                                            "argv": [
873                                                                                                                                                {
874                                                                                                                                                    "ref": "UseDualStack"
875                                                                                                                                                },
876                                                                                                                                                true
877                                                                                                                                            ]
878                                                                                                                                        }
879                                                                                                                                    ],
880                                                                                                                                    "endpoint": {
881                                                                                                                                        "url": "https://s3-outposts-fips.{accessPointArn#region}.{arnPartition#dualStackDnsSuffix}",
882                                                                                                                                        "properties": {
883                                                                                                                                            "authSchemes": [
884                                                                                                                                                {
885                                                                                                                                                    "disableDoubleEncoding": true,
886                                                                                                                                                    "name": "sigv4",
887                                                                                                                                                    "signingName": "s3-outposts",
888                                                                                                                                                    "signingRegion": "{accessPointArn#region}"
889                                                                                                                                                }
890                                                                                                                                            ]
891                                                                                                                                        },
892                                                                                                                                        "headers": {
893                                                                                                                                            "x-amz-account-id": [
894                                                                                                                                                "{accessPointArn#accountId}"
895                                                                                                                                            ],
896                                                                                                                                            "x-amz-outpost-id": [
897                                                                                                                                                "{outpostId}"
898                                                                                                                                            ]
899                                                                                                                                        }
900                                                                                                                                    },
901                                                                                                                                    "type": "endpoint"
902                                                                                                                                },
903                                                                                                                                {
904                                                                                                                                    "conditions": [
905                                                                                                                                        {
906                                                                                                                                            "fn": "booleanEquals",
907                                                                                                                                            "argv": [
908                                                                                                                                                {
909                                                                                                                                                    "ref": "UseFIPS"
910                                                                                                                                                },
911                                                                                                                                                true
912                                                                                                                                            ]
913                                                                                                                                        }
914                                                                                                                                    ],
915                                                                                                                                    "endpoint": {
916                                                                                                                                        "url": "https://s3-outposts-fips.{accessPointArn#region}.{arnPartition#dnsSuffix}",
917                                                                                                                                        "properties": {
918                                                                                                                                            "authSchemes": [
919                                                                                                                                                {
920                                                                                                                                                    "disableDoubleEncoding": true,
921                                                                                                                                                    "name": "sigv4",
922                                                                                                                                                    "signingName": "s3-outposts",
923                                                                                                                                                    "signingRegion": "{accessPointArn#region}"
924                                                                                                                                                }
925                                                                                                                                            ]
926                                                                                                                                        },
927                                                                                                                                        "headers": {
928                                                                                                                                            "x-amz-account-id": [
929                                                                                                                                                "{accessPointArn#accountId}"
930                                                                                                                                            ],
931                                                                                                                                            "x-amz-outpost-id": [
932                                                                                                                                                "{outpostId}"
933                                                                                                                                            ]
934                                                                                                                                        }
935                                                                                                                                    },
936                                                                                                                                    "type": "endpoint"
937                                                                                                                                },
938                                                                                                                                {
939                                                                                                                                    "conditions": [
940                                                                                                                                        {
941                                                                                                                                            "fn": "booleanEquals",
942                                                                                                                                            "argv": [
943                                                                                                                                                {
944                                                                                                                                                    "ref": "UseDualStack"
945                                                                                                                                                },
946                                                                                                                                                true
947                                                                                                                                            ]
948                                                                                                                                        }
949                                                                                                                                    ],
950                                                                                                                                    "endpoint": {
951                                                                                                                                        "url": "https://s3-outposts.{accessPointArn#region}.{arnPartition#dualStackDnsSuffix}",
952                                                                                                                                        "properties": {
953                                                                                                                                            "authSchemes": [
954                                                                                                                                                {
955                                                                                                                                                    "disableDoubleEncoding": true,
956                                                                                                                                                    "name": "sigv4",
957                                                                                                                                                    "signingName": "s3-outposts",
958                                                                                                                                                    "signingRegion": "{accessPointArn#region}"
959                                                                                                                                                }
960                                                                                                                                            ]
961                                                                                                                                        },
962                                                                                                                                        "headers": {
963                                                                                                                                            "x-amz-account-id": [
964                                                                                                                                                "{accessPointArn#accountId}"
965                                                                                                                                            ],
966                                                                                                                                            "x-amz-outpost-id": [
967                                                                                                                                                "{outpostId}"
968                                                                                                                                            ]
969                                                                                                                                        }
970                                                                                                                                    },
971                                                                                                                                    "type": "endpoint"
972                                                                                                                                },
973                                                                                                                                {
974                                                                                                                                    "conditions": [
975                                                                                                                                        {
976                                                                                                                                            "fn": "isSet",
977                                                                                                                                            "argv": [
978                                                                                                                                                {
979                                                                                                                                                    "ref": "Endpoint"
980                                                                                                                                                }
981                                                                                                                                            ]
982                                                                                                                                        },
983                                                                                                                                        {
984                                                                                                                                            "fn": "parseURL",
985                                                                                                                                            "argv": [
986                                                                                                                                                {
987                                                                                                                                                    "ref": "Endpoint"
988                                                                                                                                                }
989                                                                                                                                            ],
990                                                                                                                                            "assign": "url"
991                                                                                                                                        }
992                                                                                                                                    ],
993                                                                                                                                    "endpoint": {
994                                                                                                                                        "url": "{url#scheme}://{url#authority}{url#path}",
995                                                                                                                                        "properties": {
996                                                                                                                                            "authSchemes": [
997                                                                                                                                                {
998                                                                                                                                                    "disableDoubleEncoding": true,
999                                                                                                                                                    "name": "sigv4",
1000                                                                                                                                                    "signingName": "s3-outposts",
1001                                                                                                                                                    "signingRegion": "{accessPointArn#region}"
1002                                                                                                                                                }
1003                                                                                                                                            ]
1004                                                                                                                                        },
1005                                                                                                                                        "headers": {
1006                                                                                                                                            "x-amz-account-id": [
1007                                                                                                                                                "{accessPointArn#accountId}"
1008                                                                                                                                            ],
1009                                                                                                                                            "x-amz-outpost-id": [
1010                                                                                                                                                "{outpostId}"
1011                                                                                                                                            ]
1012                                                                                                                                        }
1013                                                                                                                                    },
1014                                                                                                                                    "type": "endpoint"
1015                                                                                                                                },
1016                                                                                                                                {
1017                                                                                                                                    "conditions": [],
1018                                                                                                                                    "endpoint": {
1019                                                                                                                                        "url": "https://s3-outposts.{accessPointArn#region}.{arnPartition#dnsSuffix}",
1020                                                                                                                                        "properties": {
1021                                                                                                                                            "authSchemes": [
1022                                                                                                                                                {
1023                                                                                                                                                    "disableDoubleEncoding": true,
1024                                                                                                                                                    "name": "sigv4",
1025                                                                                                                                                    "signingName": "s3-outposts",
1026                                                                                                                                                    "signingRegion": "{accessPointArn#region}"
1027                                                                                                                                                }
1028                                                                                                                                            ]
1029                                                                                                                                        },
1030                                                                                                                                        "headers": {
1031                                                                                                                                            "x-amz-account-id": [
1032                                                                                                                                                "{accessPointArn#accountId}"
1033                                                                                                                                            ],
1034                                                                                                                                            "x-amz-outpost-id": [
1035                                                                                                                                                "{outpostId}"
1036                                                                                                                                            ]
1037                                                                                                                                        }
1038                                                                                                                                    },
1039                                                                                                                                    "type": "endpoint"
1040                                                                                                                                }
1041                                                                                                                            ],
1042                                                                                                                            "type": "tree"
1043                                                                                                                        },
1044                                                                                                                        {
1045                                                                                                                            "conditions": [],
1046                                                                                                                            "error": "Expected an outpost type `accesspoint`, found `{outpostType}`",
1047                                                                                                                            "type": "error"
1048                                                                                                                        }
1049                                                                                                                    ],
1050                                                                                                                    "type": "tree"
1051                                                                                                                },
1052                                                                                                                {
1053                                                                                                                    "conditions": [],
1054                                                                                                                    "error": "Invalid ARN: expected an access point name",
1055                                                                                                                    "type": "error"
1056                                                                                                                }
1057                                                                                                            ],
1058                                                                                                            "type": "tree"
1059                                                                                                        },
1060                                                                                                        {
1061                                                                                                            "conditions": [],
1062                                                                                                            "error": "Invalid ARN: Expected a 4-component resource",
1063                                                                                                            "type": "error"
1064                                                                                                        }
1065                                                                                                    ],
1066                                                                                                    "type": "tree"
1067                                                                                                },
1068                                                                                                {
1069                                                                                                    "conditions": [],
1070                                                                                                    "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointArn#accountId}`",
1071                                                                                                    "type": "error"
1072                                                                                                }
1073                                                                                            ],
1074                                                                                            "type": "tree"
1075                                                                                        },
1076                                                                                        {
1077                                                                                            "conditions": [],
1078                                                                                            "error": "Invalid ARN: missing account ID",
1079                                                                                            "type": "error"
1080                                                                                        }
1081                                                                                    ],
1082                                                                                    "type": "tree"
1083                                                                                },
1084                                                                                {
1085                                                                                    "conditions": [],
1086                                                                                    "error": "Invalid region in ARN: `{accessPointArn#region}` (invalid DNS name)",
1087                                                                                    "type": "error"
1088                                                                                }
1089                                                                            ],
1090                                                                            "type": "tree"
1091                                                                        },
1092                                                                        {
1093                                                                            "conditions": [],
1094                                                                            "error": "Client was configured for partition `{partitionResult#name}` but ARN has `{arnPartition#name}`",
1095                                                                            "type": "error"
1096                                                                        }
1097                                                                    ],
1098                                                                    "type": "tree"
1099                                                                }
1100                                                            ],
1101                                                            "type": "tree"
1102                                                        }
1103                                                    ],
1104                                                    "type": "tree"
1105                                                },
1106                                                {
1107                                                    "conditions": [],
1108                                                    "error": "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`., found: `{outpostId}`",
1109                                                    "type": "error"
1110                                                }
1111                                            ],
1112                                            "type": "tree"
1113                                        },
1114                                        {
1115                                            "conditions": [],
1116                                            "error": "Invalid ARN: The Outpost Id was not set",
1117                                            "type": "error"
1118                                        }
1119                                    ],
1120                                    "type": "tree"
1121                                }
1122                            ],
1123                            "type": "tree"
1124                        },
1125                        {
1126                            "conditions": [],
1127                            "error": "Invalid ARN: No ARN type specified",
1128                            "type": "error"
1129                        }
1130                    ],
1131                    "type": "tree"
1132                },
1133                {
1134                    "conditions": [
1135                        {
1136                            "fn": "isSet",
1137                            "argv": [
1138                                {
1139                                    "ref": "Bucket"
1140                                }
1141                            ]
1142                        },
1143                        {
1144                            "fn": "aws.parseArn",
1145                            "argv": [
1146                                {
1147                                    "ref": "Bucket"
1148                                }
1149                            ],
1150                            "assign": "bucketArn"
1151                        }
1152                    ],
1153                    "rules": [
1154                        {
1155                            "conditions": [
1156                                {
1157                                    "fn": "getAttr",
1158                                    "argv": [
1159                                        {
1160                                            "ref": "bucketArn"
1161                                        },
1162                                        "resourceId[0]"
1163                                    ],
1164                                    "assign": "arnType"
1165                                },
1166                                {
1167                                    "fn": "not",
1168                                    "argv": [
1169                                        {
1170                                            "fn": "stringEquals",
1171                                            "argv": [
1172                                                {
1173                                                    "ref": "arnType"
1174                                                },
1175                                                ""
1176                                            ]
1177                                        }
1178                                    ]
1179                                }
1180                            ],
1181                            "rules": [
1182                                {
1183                                    "conditions": [
1184                                        {
1185                                            "fn": "stringEquals",
1186                                            "argv": [
1187                                                {
1188                                                    "fn": "getAttr",
1189                                                    "argv": [
1190                                                        {
1191                                                            "ref": "bucketArn"
1192                                                        },
1193                                                        "service"
1194                                                    ]
1195                                                },
1196                                                "s3-outposts"
1197                                            ]
1198                                        }
1199                                    ],
1200                                    "rules": [
1201                                        {
1202                                            "conditions": [
1203                                                {
1204                                                    "fn": "getAttr",
1205                                                    "argv": [
1206                                                        {
1207                                                            "ref": "bucketArn"
1208                                                        },
1209                                                        "resourceId[1]"
1210                                                    ],
1211                                                    "assign": "outpostId"
1212                                                }
1213                                            ],
1214                                            "rules": [
1215                                                {
1216                                                    "conditions": [
1217                                                        {
1218                                                            "fn": "isValidHostLabel",
1219                                                            "argv": [
1220                                                                {
1221                                                                    "ref": "outpostId"
1222                                                                },
1223                                                                false
1224                                                            ]
1225                                                        }
1226                                                    ],
1227                                                    "rules": [
1228                                                        {
1229                                                            "conditions": [
1230                                                                {
1231                                                                    "fn": "isSet",
1232                                                                    "argv": [
1233                                                                        {
1234                                                                            "ref": "Endpoint"
1235                                                                        }
1236                                                                    ]
1237                                                                },
1238                                                                {
1239                                                                    "fn": "booleanEquals",
1240                                                                    "argv": [
1241                                                                        {
1242                                                                            "ref": "UseDualStack"
1243                                                                        },
1244                                                                        true
1245                                                                    ]
1246                                                                }
1247                                                            ],
1248                                                            "error": "Invalid Configuration: DualStack and custom endpoint are not supported",
1249                                                            "type": "error"
1250                                                        },
1251                                                        {
1252                                                            "conditions": [
1253                                                                {
1254                                                                    "fn": "isSet",
1255                                                                    "argv": [
1256                                                                        {
1257                                                                            "ref": "UseArnRegion"
1258                                                                        }
1259                                                                    ]
1260                                                                },
1261                                                                {
1262                                                                    "fn": "booleanEquals",
1263                                                                    "argv": [
1264                                                                        {
1265                                                                            "ref": "UseArnRegion"
1266                                                                        },
1267                                                                        false
1268                                                                    ]
1269                                                                },
1270                                                                {
1271                                                                    "fn": "not",
1272                                                                    "argv": [
1273                                                                        {
1274                                                                            "fn": "stringEquals",
1275                                                                            "argv": [
1276                                                                                {
1277                                                                                    "fn": "getAttr",
1278                                                                                    "argv": [
1279                                                                                        {
1280                                                                                            "ref": "bucketArn"
1281                                                                                        },
1282                                                                                        "region"
1283                                                                                    ]
1284                                                                                },
1285                                                                                "{Region}"
1286                                                                            ]
1287                                                                        }
1288                                                                    ]
1289                                                                }
1290                                                            ],
1291                                                            "error": "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",
1292                                                            "type": "error"
1293                                                        },
1294                                                        {
1295                                                            "conditions": [
1296                                                                {
1297                                                                    "fn": "aws.partition",
1298                                                                    "argv": [
1299                                                                        {
1300                                                                            "fn": "getAttr",
1301                                                                            "argv": [
1302                                                                                {
1303                                                                                    "ref": "bucketArn"
1304                                                                                },
1305                                                                                "region"
1306                                                                            ]
1307                                                                        }
1308                                                                    ],
1309                                                                    "assign": "arnPartition"
1310                                                                }
1311                                                            ],
1312                                                            "rules": [
1313                                                                {
1314                                                                    "conditions": [
1315                                                                        {
1316                                                                            "fn": "aws.partition",
1317                                                                            "argv": [
1318                                                                                {
1319                                                                                    "ref": "Region"
1320                                                                                }
1321                                                                            ],
1322                                                                            "assign": "partitionResult"
1323                                                                        }
1324                                                                    ],
1325                                                                    "rules": [
1326                                                                        {
1327                                                                            "conditions": [
1328                                                                                {
1329                                                                                    "fn": "stringEquals",
1330                                                                                    "argv": [
1331                                                                                        {
1332                                                                                            "fn": "getAttr",
1333                                                                                            "argv": [
1334                                                                                                {
1335                                                                                                    "ref": "arnPartition"
1336                                                                                                },
1337                                                                                                "name"
1338                                                                                            ]
1339                                                                                        },
1340                                                                                        {
1341                                                                                            "fn": "getAttr",
1342                                                                                            "argv": [
1343                                                                                                {
1344                                                                                                    "ref": "partitionResult"
1345                                                                                                },
1346                                                                                                "name"
1347                                                                                            ]
1348                                                                                        }
1349                                                                                    ]
1350                                                                                }
1351                                                                            ],
1352                                                                            "rules": [
1353                                                                                {
1354                                                                                    "conditions": [
1355                                                                                        {
1356                                                                                            "fn": "isValidHostLabel",
1357                                                                                            "argv": [
1358                                                                                                {
1359                                                                                                    "fn": "getAttr",
1360                                                                                                    "argv": [
1361                                                                                                        {
1362                                                                                                            "ref": "bucketArn"
1363                                                                                                        },
1364                                                                                                        "region"
1365                                                                                                    ]
1366                                                                                                },
1367                                                                                                true
1368                                                                                            ]
1369                                                                                        }
1370                                                                                    ],
1371                                                                                    "rules": [
1372                                                                                        {
1373                                                                                            "conditions": [
1374                                                                                                {
1375                                                                                                    "fn": "not",
1376                                                                                                    "argv": [
1377                                                                                                        {
1378                                                                                                            "fn": "stringEquals",
1379                                                                                                            "argv": [
1380                                                                                                                {
1381                                                                                                                    "fn": "getAttr",
1382                                                                                                                    "argv": [
1383                                                                                                                        {
1384                                                                                                                            "ref": "bucketArn"
1385                                                                                                                        },
1386                                                                                                                        "accountId"
1387                                                                                                                    ]
1388                                                                                                                },
1389                                                                                                                ""
1390                                                                                                            ]
1391                                                                                                        }
1392                                                                                                    ]
1393                                                                                                }
1394                                                                                            ],
1395                                                                                            "rules": [
1396                                                                                                {
1397                                                                                                    "conditions": [
1398                                                                                                        {
1399                                                                                                            "fn": "isValidHostLabel",
1400                                                                                                            "argv": [
1401                                                                                                                {
1402                                                                                                                    "fn": "getAttr",
1403                                                                                                                    "argv": [
1404                                                                                                                        {
1405                                                                                                                            "ref": "bucketArn"
1406                                                                                                                        },
1407                                                                                                                        "accountId"
1408                                                                                                                    ]
1409                                                                                                                },
1410                                                                                                                false
1411                                                                                                            ]
1412                                                                                                        }
1413                                                                                                    ],
1414                                                                                                    "rules": [
1415                                                                                                        {
1416                                                                                                            "conditions": [
1417                                                                                                                {
1418                                                                                                                    "fn": "isSet",
1419                                                                                                                    "argv": [
1420                                                                                                                        {
1421                                                                                                                            "ref": "AccountId"
1422                                                                                                                        }
1423                                                                                                                    ]
1424                                                                                                                },
1425                                                                                                                {
1426                                                                                                                    "fn": "not",
1427                                                                                                                    "argv": [
1428                                                                                                                        {
1429                                                                                                                            "fn": "stringEquals",
1430                                                                                                                            "argv": [
1431                                                                                                                                {
1432                                                                                                                                    "ref": "AccountId"
1433                                                                                                                                },
1434                                                                                                                                "{bucketArn#accountId}"
1435                                                                                                                            ]
1436                                                                                                                        }
1437                                                                                                                    ]
1438                                                                                                                }
1439                                                                                                            ],
1440                                                                                                            "error": "Invalid ARN: the accountId specified in the ARN (`{bucketArn#accountId}`) does not match the parameter (`{AccountId}`)",
1441                                                                                                            "type": "error"
1442                                                                                                        },
1443                                                                                                        {
1444                                                                                                            "conditions": [
1445                                                                                                                {
1446                                                                                                                    "fn": "getAttr",
1447                                                                                                                    "argv": [
1448                                                                                                                        {
1449                                                                                                                            "ref": "bucketArn"
1450                                                                                                                        },
1451                                                                                                                        "resourceId[2]"
1452                                                                                                                    ],
1453                                                                                                                    "assign": "outpostType"
1454                                                                                                                }
1455                                                                                                            ],
1456                                                                                                            "rules": [
1457                                                                                                                {
1458                                                                                                                    "conditions": [
1459                                                                                                                        {
1460                                                                                                                            "fn": "getAttr",
1461                                                                                                                            "argv": [
1462                                                                                                                                {
1463                                                                                                                                    "ref": "bucketArn"
1464                                                                                                                                },
1465                                                                                                                                "resourceId[3]"
1466                                                                                                                            ],
1467                                                                                                                            "assign": "bucketName"
1468                                                                                                                        }
1469                                                                                                                    ],
1470                                                                                                                    "rules": [
1471                                                                                                                        {
1472                                                                                                                            "conditions": [
1473                                                                                                                                {
1474                                                                                                                                    "fn": "stringEquals",
1475                                                                                                                                    "argv": [
1476                                                                                                                                        {
1477                                                                                                                                            "ref": "outpostType"
1478                                                                                                                                        },
1479                                                                                                                                        "bucket"
1480                                                                                                                                    ]
1481                                                                                                                                }
1482                                                                                                                            ],
1483                                                                                                                            "rules": [
1484                                                                                                                                {
1485                                                                                                                                    "conditions": [
1486                                                                                                                                        {
1487                                                                                                                                            "fn": "booleanEquals",
1488                                                                                                                                            "argv": [
1489                                                                                                                                                {
1490                                                                                                                                                    "ref": "UseFIPS"
1491                                                                                                                                                },
1492                                                                                                                                                true
1493                                                                                                                                            ]
1494                                                                                                                                        },
1495                                                                                                                                        {
1496                                                                                                                                            "fn": "booleanEquals",
1497                                                                                                                                            "argv": [
1498                                                                                                                                                {
1499                                                                                                                                                    "ref": "UseDualStack"
1500                                                                                                                                                },
1501                                                                                                                                                true
1502                                                                                                                                            ]
1503                                                                                                                                        }
1504                                                                                                                                    ],
1505                                                                                                                                    "endpoint": {
1506                                                                                                                                        "url": "https://s3-outposts-fips.{bucketArn#region}.{arnPartition#dualStackDnsSuffix}",
1507                                                                                                                                        "properties": {
1508                                                                                                                                            "authSchemes": [
1509                                                                                                                                                {
1510                                                                                                                                                    "disableDoubleEncoding": true,
1511                                                                                                                                                    "name": "sigv4",
1512                                                                                                                                                    "signingName": "s3-outposts",
1513                                                                                                                                                    "signingRegion": "{bucketArn#region}"
1514                                                                                                                                                }
1515                                                                                                                                            ]
1516                                                                                                                                        },
1517                                                                                                                                        "headers": {
1518                                                                                                                                            "x-amz-account-id": [
1519                                                                                                                                                "{bucketArn#accountId}"
1520                                                                                                                                            ],
1521                                                                                                                                            "x-amz-outpost-id": [
1522                                                                                                                                                "{outpostId}"
1523                                                                                                                                            ]
1524                                                                                                                                        }
1525                                                                                                                                    },
1526                                                                                                                                    "type": "endpoint"
1527                                                                                                                                },
1528                                                                                                                                {
1529                                                                                                                                    "conditions": [
1530                                                                                                                                        {
1531                                                                                                                                            "fn": "booleanEquals",
1532                                                                                                                                            "argv": [
1533                                                                                                                                                {
1534                                                                                                                                                    "ref": "UseFIPS"
1535                                                                                                                                                },
1536                                                                                                                                                true
1537                                                                                                                                            ]
1538                                                                                                                                        }
1539                                                                                                                                    ],
1540                                                                                                                                    "endpoint": {
1541                                                                                                                                        "url": "https://s3-outposts-fips.{bucketArn#region}.{arnPartition#dnsSuffix}",
1542                                                                                                                                        "properties": {
1543                                                                                                                                            "authSchemes": [
1544                                                                                                                                                {
1545                                                                                                                                                    "disableDoubleEncoding": true,
1546                                                                                                                                                    "name": "sigv4",
1547                                                                                                                                                    "signingName": "s3-outposts",
1548                                                                                                                                                    "signingRegion": "{bucketArn#region}"
1549                                                                                                                                                }
1550                                                                                                                                            ]
1551                                                                                                                                        },
1552                                                                                                                                        "headers": {
1553                                                                                                                                            "x-amz-account-id": [
1554                                                                                                                                                "{bucketArn#accountId}"
1555                                                                                                                                            ],
1556                                                                                                                                            "x-amz-outpost-id": [
1557                                                                                                                                                "{outpostId}"
1558                                                                                                                                            ]
1559                                                                                                                                        }
1560                                                                                                                                    },
1561                                                                                                                                    "type": "endpoint"
1562                                                                                                                                },
1563                                                                                                                                {
1564                                                                                                                                    "conditions": [
1565                                                                                                                                        {
1566                                                                                                                                            "fn": "booleanEquals",
1567                                                                                                                                            "argv": [
1568                                                                                                                                                {
1569                                                                                                                                                    "ref": "UseDualStack"
1570                                                                                                                                                },
1571                                                                                                                                                true
1572                                                                                                                                            ]
1573                                                                                                                                        }
1574                                                                                                                                    ],
1575                                                                                                                                    "endpoint": {
1576                                                                                                                                        "url": "https://s3-outposts.{bucketArn#region}.{arnPartition#dualStackDnsSuffix}",
1577                                                                                                                                        "properties": {
1578                                                                                                                                            "authSchemes": [
1579                                                                                                                                                {
1580                                                                                                                                                    "disableDoubleEncoding": true,
1581                                                                                                                                                    "name": "sigv4",
1582                                                                                                                                                    "signingName": "s3-outposts",
1583                                                                                                                                                    "signingRegion": "{bucketArn#region}"
1584                                                                                                                                                }
1585                                                                                                                                            ]
1586                                                                                                                                        },
1587                                                                                                                                        "headers": {
1588                                                                                                                                            "x-amz-account-id": [
1589                                                                                                                                                "{bucketArn#accountId}"
1590                                                                                                                                            ],
1591                                                                                                                                            "x-amz-outpost-id": [
1592                                                                                                                                                "{outpostId}"
1593                                                                                                                                            ]
1594                                                                                                                                        }
1595                                                                                                                                    },
1596                                                                                                                                    "type": "endpoint"
1597                                                                                                                                },
1598                                                                                                                                {
1599                                                                                                                                    "conditions": [
1600                                                                                                                                        {
1601                                                                                                                                            "fn": "isSet",
1602                                                                                                                                            "argv": [
1603                                                                                                                                                {
1604                                                                                                                                                    "ref": "Endpoint"
1605                                                                                                                                                }
1606                                                                                                                                            ]
1607                                                                                                                                        },
1608                                                                                                                                        {
1609                                                                                                                                            "fn": "parseURL",
1610                                                                                                                                            "argv": [
1611                                                                                                                                                {
1612                                                                                                                                                    "ref": "Endpoint"
1613                                                                                                                                                }
1614                                                                                                                                            ],
1615                                                                                                                                            "assign": "url"
1616                                                                                                                                        }
1617                                                                                                                                    ],
1618                                                                                                                                    "endpoint": {
1619                                                                                                                                        "url": "{url#scheme}://{url#authority}{url#path}",
1620                                                                                                                                        "properties": {
1621                                                                                                                                            "authSchemes": [
1622                                                                                                                                                {
1623                                                                                                                                                    "disableDoubleEncoding": true,
1624                                                                                                                                                    "name": "sigv4",
1625                                                                                                                                                    "signingName": "s3-outposts",
1626                                                                                                                                                    "signingRegion": "{bucketArn#region}"
1627                                                                                                                                                }
1628                                                                                                                                            ]
1629                                                                                                                                        },
1630                                                                                                                                        "headers": {
1631                                                                                                                                            "x-amz-account-id": [
1632                                                                                                                                                "{bucketArn#accountId}"
1633                                                                                                                                            ],
1634                                                                                                                                            "x-amz-outpost-id": [
1635                                                                                                                                                "{outpostId}"
1636                                                                                                                                            ]
1637                                                                                                                                        }
1638                                                                                                                                    },
1639                                                                                                                                    "type": "endpoint"
1640                                                                                                                                },
1641                                                                                                                                {
1642                                                                                                                                    "conditions": [],
1643                                                                                                                                    "endpoint": {
1644                                                                                                                                        "url": "https://s3-outposts.{bucketArn#region}.{arnPartition#dnsSuffix}",
1645                                                                                                                                        "properties": {
1646                                                                                                                                            "authSchemes": [
1647                                                                                                                                                {
1648                                                                                                                                                    "disableDoubleEncoding": true,
1649                                                                                                                                                    "name": "sigv4",
1650                                                                                                                                                    "signingName": "s3-outposts",
1651                                                                                                                                                    "signingRegion": "{bucketArn#region}"
1652                                                                                                                                                }
1653                                                                                                                                            ]
1654                                                                                                                                        },
1655                                                                                                                                        "headers": {
1656                                                                                                                                            "x-amz-account-id": [
1657                                                                                                                                                "{bucketArn#accountId}"
1658                                                                                                                                            ],
1659                                                                                                                                            "x-amz-outpost-id": [
1660                                                                                                                                                "{outpostId}"
1661                                                                                                                                            ]
1662                                                                                                                                        }
1663                                                                                                                                    },
1664                                                                                                                                    "type": "endpoint"
1665                                                                                                                                }
1666                                                                                                                            ],
1667                                                                                                                            "type": "tree"
1668                                                                                                                        },
1669                                                                                                                        {
1670                                                                                                                            "conditions": [],
1671                                                                                                                            "error": "Invalid ARN: Expected an outpost type `bucket`, found `{outpostType}`",
1672                                                                                                                            "type": "error"
1673                                                                                                                        }
1674                                                                                                                    ],
1675                                                                                                                    "type": "tree"
1676                                                                                                                },
1677                                                                                                                {
1678                                                                                                                    "conditions": [],
1679                                                                                                                    "error": "Invalid ARN: expected a bucket name",
1680                                                                                                                    "type": "error"
1681                                                                                                                }
1682                                                                                                            ],
1683                                                                                                            "type": "tree"
1684                                                                                                        },
1685                                                                                                        {
1686                                                                                                            "conditions": [],
1687                                                                                                            "error": "Invalid ARN: Expected a 4-component resource",
1688                                                                                                            "type": "error"
1689                                                                                                        }
1690                                                                                                    ],
1691                                                                                                    "type": "tree"
1692                                                                                                },
1693                                                                                                {
1694                                                                                                    "conditions": [],
1695                                                                                                    "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",
1696                                                                                                    "type": "error"
1697                                                                                                }
1698                                                                                            ],
1699                                                                                            "type": "tree"
1700                                                                                        },
1701                                                                                        {
1702                                                                                            "conditions": [],
1703                                                                                            "error": "Invalid ARN: missing account ID",
1704                                                                                            "type": "error"
1705                                                                                        }
1706                                                                                    ],
1707                                                                                    "type": "tree"
1708                                                                                },
1709                                                                                {
1710                                                                                    "conditions": [],
1711                                                                                    "error": "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",
1712                                                                                    "type": "error"
1713                                                                                }
1714                                                                            ],
1715                                                                            "type": "tree"
1716                                                                        },
1717                                                                        {
1718                                                                            "conditions": [],
1719                                                                            "error": "Client was configured for partition `{partitionResult#name}` but ARN has `{arnPartition#name}`",
1720                                                                            "type": "error"
1721                                                                        }
1722                                                                    ],
1723                                                                    "type": "tree"
1724                                                                }
1725                                                            ],
1726                                                            "type": "tree"
1727                                                        }
1728                                                    ],
1729                                                    "type": "tree"
1730                                                },
1731                                                {
1732                                                    "conditions": [],
1733                                                    "error": "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`., found: `{outpostId}`",
1734                                                    "type": "error"
1735                                                }
1736                                            ],
1737                                            "type": "tree"
1738                                        },
1739                                        {
1740                                            "conditions": [],
1741                                            "error": "Invalid ARN: The Outpost Id was not set",
1742                                            "type": "error"
1743                                        }
1744                                    ],
1745                                    "type": "tree"
1746                                }
1747                            ],
1748                            "type": "tree"
1749                        },
1750                        {
1751                            "conditions": [],
1752                            "error": "Invalid ARN: No ARN type specified",
1753                            "type": "error"
1754                        }
1755                    ],
1756                    "type": "tree"
1757                },
1758                {
1759                    "conditions": [
1760                        {
1761                            "fn": "aws.partition",
1762                            "argv": [
1763                                {
1764                                    "ref": "Region"
1765                                }
1766                            ],
1767                            "assign": "partitionResult"
1768                        }
1769                    ],
1770                    "rules": [
1771                        {
1772                            "conditions": [
1773                                {
1774                                    "fn": "isValidHostLabel",
1775                                    "argv": [
1776                                        {
1777                                            "ref": "Region"
1778                                        },
1779                                        true
1780                                    ]
1781                                }
1782                            ],
1783                            "rules": [
1784                                {
1785                                    "conditions": [
1786                                        {
1787                                            "fn": "booleanEquals",
1788                                            "argv": [
1789                                                {
1790                                                    "ref": "UseFIPS"
1791                                                },
1792                                                true
1793                                            ]
1794                                        },
1795                                        {
1796                                            "fn": "stringEquals",
1797                                            "argv": [
1798                                                {
1799                                                    "fn": "getAttr",
1800                                                    "argv": [
1801                                                        {
1802                                                            "ref": "partitionResult"
1803                                                        },
1804                                                        "name"
1805                                                    ]
1806                                                },
1807                                                "aws-cn"
1808                                            ]
1809                                        }
1810                                    ],
1811                                    "error": "Partition does not support FIPS",
1812                                    "type": "error"
1813                                },
1814                                {
1815                                    "conditions": [
1816                                        {
1817                                            "fn": "isSet",
1818                                            "argv": [
1819                                                {
1820                                                    "ref": "RequiresAccountId"
1821                                                }
1822                                            ]
1823                                        },
1824                                        {
1825                                            "fn": "booleanEquals",
1826                                            "argv": [
1827                                                {
1828                                                    "ref": "RequiresAccountId"
1829                                                },
1830                                                true
1831                                            ]
1832                                        },
1833                                        {
1834                                            "fn": "not",
1835                                            "argv": [
1836                                                {
1837                                                    "fn": "isSet",
1838                                                    "argv": [
1839                                                        {
1840                                                            "ref": "AccountId"
1841                                                        }
1842                                                    ]
1843                                                }
1844                                            ]
1845                                        }
1846                                    ],
1847                                    "error": "AccountId is required but not set",
1848                                    "type": "error"
1849                                },
1850                                {
1851                                    "conditions": [
1852                                        {
1853                                            "fn": "isSet",
1854                                            "argv": [
1855                                                {
1856                                                    "ref": "AccountId"
1857                                                }
1858                                            ]
1859                                        },
1860                                        {
1861                                            "fn": "not",
1862                                            "argv": [
1863                                                {
1864                                                    "fn": "isValidHostLabel",
1865                                                    "argv": [
1866                                                        {
1867                                                            "ref": "AccountId"
1868                                                        },
1869                                                        false
1870                                                    ]
1871                                                }
1872                                            ]
1873                                        }
1874                                    ],
1875                                    "error": "AccountId must only contain a-z, A-Z, 0-9 and `-`.",
1876                                    "type": "error"
1877                                },
1878                                {
1879                                    "conditions": [
1880                                        {
1881                                            "fn": "isSet",
1882                                            "argv": [
1883                                                {
1884                                                    "ref": "Endpoint"
1885                                                }
1886                                            ]
1887                                        },
1888                                        {
1889                                            "fn": "parseURL",
1890                                            "argv": [
1891                                                {
1892                                                    "ref": "Endpoint"
1893                                                }
1894                                            ],
1895                                            "assign": "url"
1896                                        }
1897                                    ],
1898                                    "rules": [
1899                                        {
1900                                            "conditions": [
1901                                                {
1902                                                    "fn": "booleanEquals",
1903                                                    "argv": [
1904                                                        {
1905                                                            "ref": "UseDualStack"
1906                                                        },
1907                                                        true
1908                                                    ]
1909                                                }
1910                                            ],
1911                                            "error": "Invalid Configuration: DualStack and custom endpoint are not supported",
1912                                            "type": "error"
1913                                        },
1914                                        {
1915                                            "conditions": [
1916                                                {
1917                                                    "fn": "isSet",
1918                                                    "argv": [
1919                                                        {
1920                                                            "ref": "RequiresAccountId"
1921                                                        }
1922                                                    ]
1923                                                },
1924                                                {
1925                                                    "fn": "booleanEquals",
1926                                                    "argv": [
1927                                                        {
1928                                                            "ref": "RequiresAccountId"
1929                                                        },
1930                                                        true
1931                                                    ]
1932                                                },
1933                                                {
1934                                                    "fn": "isSet",
1935                                                    "argv": [
1936                                                        {
1937                                                            "ref": "AccountId"
1938                                                        }
1939                                                    ]
1940                                                }
1941                                            ],
1942                                            "endpoint": {
1943                                                "url": "{url#scheme}://{AccountId}.{url#authority}{url#path}",
1944                                                "properties": {
1945                                                    "authSchemes": [
1946                                                        {
1947                                                            "disableDoubleEncoding": true,
1948                                                            "name": "sigv4",
1949                                                            "signingName": "s3",
1950                                                            "signingRegion": "{Region}"
1951                                                        }
1952                                                    ]
1953                                                },
1954                                                "headers": {}
1955                                            },
1956                                            "type": "endpoint"
1957                                        },
1958                                        {
1959                                            "conditions": [],
1960                                            "endpoint": {
1961                                                "url": "{url#scheme}://{url#authority}{url#path}",
1962                                                "properties": {
1963                                                    "authSchemes": [
1964                                                        {
1965                                                            "disableDoubleEncoding": true,
1966                                                            "name": "sigv4",
1967                                                            "signingName": "s3",
1968                                                            "signingRegion": "{Region}"
1969                                                        }
1970                                                    ]
1971                                                },
1972                                                "headers": {}
1973                                            },
1974                                            "type": "endpoint"
1975                                        }
1976                                    ],
1977                                    "type": "tree"
1978                                },
1979                                {
1980                                    "conditions": [
1981                                        {
1982                                            "fn": "booleanEquals",
1983                                            "argv": [
1984                                                {
1985                                                    "ref": "UseFIPS"
1986                                                },
1987                                                true
1988                                            ]
1989                                        },
1990                                        {
1991                                            "fn": "booleanEquals",
1992                                            "argv": [
1993                                                {
1994                                                    "ref": "UseDualStack"
1995                                                },
1996                                                true
1997                                            ]
1998                                        },
1999                                        {
2000                                            "fn": "isSet",
2001                                            "argv": [
2002                                                {
2003                                                    "ref": "RequiresAccountId"
2004                                                }
2005                                            ]
2006                                        },
2007                                        {
2008                                            "fn": "booleanEquals",
2009                                            "argv": [
2010                                                {
2011                                                    "ref": "RequiresAccountId"
2012                                                },
2013                                                true
2014                                            ]
2015                                        },
2016                                        {
2017                                            "fn": "isSet",
2018                                            "argv": [
2019                                                {
2020                                                    "ref": "AccountId"
2021                                                }
2022                                            ]
2023                                        }
2024                                    ],
2025                                    "endpoint": {
2026                                        "url": "https://{AccountId}.s3-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",
2027                                        "properties": {
2028                                            "authSchemes": [
2029                                                {
2030                                                    "disableDoubleEncoding": true,
2031                                                    "name": "sigv4",
2032                                                    "signingName": "s3",
2033                                                    "signingRegion": "{Region}"
2034                                                }
2035                                            ]
2036                                        },
2037                                        "headers": {}
2038                                    },
2039                                    "type": "endpoint"
2040                                },
2041                                {
2042                                    "conditions": [
2043                                        {
2044                                            "fn": "booleanEquals",
2045                                            "argv": [
2046                                                {
2047                                                    "ref": "UseFIPS"
2048                                                },
2049                                                true
2050                                            ]
2051                                        },
2052                                        {
2053                                            "fn": "booleanEquals",
2054                                            "argv": [
2055                                                {
2056                                                    "ref": "UseDualStack"
2057                                                },
2058                                                true
2059                                            ]
2060                                        }
2061                                    ],
2062                                    "endpoint": {
2063                                        "url": "https://s3-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",
2064                                        "properties": {
2065                                            "authSchemes": [
2066                                                {
2067                                                    "disableDoubleEncoding": true,
2068                                                    "name": "sigv4",
2069                                                    "signingName": "s3",
2070                                                    "signingRegion": "{Region}"
2071                                                }
2072                                            ]
2073                                        },
2074                                        "headers": {}
2075                                    },
2076                                    "type": "endpoint"
2077                                },
2078                                {
2079                                    "conditions": [
2080                                        {
2081                                            "fn": "booleanEquals",
2082                                            "argv": [
2083                                                {
2084                                                    "ref": "UseFIPS"
2085                                                },
2086                                                true
2087                                            ]
2088                                        },
2089                                        {
2090                                            "fn": "booleanEquals",
2091                                            "argv": [
2092                                                {
2093                                                    "ref": "UseDualStack"
2094                                                },
2095                                                false
2096                                            ]
2097                                        },
2098                                        {
2099                                            "fn": "isSet",
2100                                            "argv": [
2101                                                {
2102                                                    "ref": "RequiresAccountId"
2103                                                }
2104                                            ]
2105                                        },
2106                                        {
2107                                            "fn": "booleanEquals",
2108                                            "argv": [
2109                                                {
2110                                                    "ref": "RequiresAccountId"
2111                                                },
2112                                                true
2113                                            ]
2114                                        },
2115                                        {
2116                                            "fn": "isSet",
2117                                            "argv": [
2118                                                {
2119                                                    "ref": "AccountId"
2120                                                }
2121                                            ]
2122                                        }
2123                                    ],
2124                                    "endpoint": {
2125                                        "url": "https://{AccountId}.s3-control-fips.{Region}.{partitionResult#dnsSuffix}",
2126                                        "properties": {
2127                                            "authSchemes": [
2128                                                {
2129                                                    "disableDoubleEncoding": true,
2130                                                    "name": "sigv4",
2131                                                    "signingName": "s3",
2132                                                    "signingRegion": "{Region}"
2133                                                }
2134                                            ]
2135                                        },
2136                                        "headers": {}
2137                                    },
2138                                    "type": "endpoint"
2139                                },
2140                                {
2141                                    "conditions": [
2142                                        {
2143                                            "fn": "booleanEquals",
2144                                            "argv": [
2145                                                {
2146                                                    "ref": "UseFIPS"
2147                                                },
2148                                                true
2149                                            ]
2150                                        },
2151                                        {
2152                                            "fn": "booleanEquals",
2153                                            "argv": [
2154                                                {
2155                                                    "ref": "UseDualStack"
2156                                                },
2157                                                false
2158                                            ]
2159                                        }
2160                                    ],
2161                                    "endpoint": {
2162                                        "url": "https://s3-control-fips.{Region}.{partitionResult#dnsSuffix}",
2163                                        "properties": {
2164                                            "authSchemes": [
2165                                                {
2166                                                    "disableDoubleEncoding": true,
2167                                                    "name": "sigv4",
2168                                                    "signingName": "s3",
2169                                                    "signingRegion": "{Region}"
2170                                                }
2171                                            ]
2172                                        },
2173                                        "headers": {}
2174                                    },
2175                                    "type": "endpoint"
2176                                },
2177                                {
2178                                    "conditions": [
2179                                        {
2180                                            "fn": "booleanEquals",
2181                                            "argv": [
2182                                                {
2183                                                    "ref": "UseFIPS"
2184                                                },
2185                                                false
2186                                            ]
2187                                        },
2188                                        {
2189                                            "fn": "booleanEquals",
2190                                            "argv": [
2191                                                {
2192                                                    "ref": "UseDualStack"
2193                                                },
2194                                                true
2195                                            ]
2196                                        },
2197                                        {
2198                                            "fn": "isSet",
2199                                            "argv": [
2200                                                {
2201                                                    "ref": "RequiresAccountId"
2202                                                }
2203                                            ]
2204                                        },
2205                                        {
2206                                            "fn": "booleanEquals",
2207                                            "argv": [
2208                                                {
2209                                                    "ref": "RequiresAccountId"
2210                                                },
2211                                                true
2212                                            ]
2213                                        },
2214                                        {
2215                                            "fn": "isSet",
2216                                            "argv": [
2217                                                {
2218                                                    "ref": "AccountId"
2219                                                }
2220                                            ]
2221                                        }
2222                                    ],
2223                                    "endpoint": {
2224                                        "url": "https://{AccountId}.s3-control.dualstack.{Region}.{partitionResult#dnsSuffix}",
2225                                        "properties": {
2226                                            "authSchemes": [
2227                                                {
2228                                                    "disableDoubleEncoding": true,
2229                                                    "name": "sigv4",
2230                                                    "signingName": "s3",
2231                                                    "signingRegion": "{Region}"
2232                                                }
2233                                            ]
2234                                        },
2235                                        "headers": {}
2236                                    },
2237                                    "type": "endpoint"
2238                                },
2239                                {
2240                                    "conditions": [
2241                                        {
2242                                            "fn": "booleanEquals",
2243                                            "argv": [
2244                                                {
2245                                                    "ref": "UseFIPS"
2246                                                },
2247                                                false
2248                                            ]
2249                                        },
2250                                        {
2251                                            "fn": "booleanEquals",
2252                                            "argv": [
2253                                                {
2254                                                    "ref": "UseDualStack"
2255                                                },
2256                                                true
2257                                            ]
2258                                        }
2259                                    ],
2260                                    "endpoint": {
2261                                        "url": "https://s3-control.dualstack.{Region}.{partitionResult#dnsSuffix}",
2262                                        "properties": {
2263                                            "authSchemes": [
2264                                                {
2265                                                    "disableDoubleEncoding": true,
2266                                                    "name": "sigv4",
2267                                                    "signingName": "s3",
2268                                                    "signingRegion": "{Region}"
2269                                                }
2270                                            ]
2271                                        },
2272                                        "headers": {}
2273                                    },
2274                                    "type": "endpoint"
2275                                },
2276                                {
2277                                    "conditions": [
2278                                        {
2279                                            "fn": "booleanEquals",
2280                                            "argv": [
2281                                                {
2282                                                    "ref": "UseFIPS"
2283                                                },
2284                                                false
2285                                            ]
2286                                        },
2287                                        {
2288                                            "fn": "booleanEquals",
2289                                            "argv": [
2290                                                {
2291                                                    "ref": "UseDualStack"
2292                                                },
2293                                                false
2294                                            ]
2295                                        },
2296                                        {
2297                                            "fn": "isSet",
2298                                            "argv": [
2299                                                {
2300                                                    "ref": "RequiresAccountId"
2301                                                }
2302                                            ]
2303                                        },
2304                                        {
2305                                            "fn": "booleanEquals",
2306                                            "argv": [
2307                                                {
2308                                                    "ref": "RequiresAccountId"
2309                                                },
2310                                                true
2311                                            ]
2312                                        },
2313                                        {
2314                                            "fn": "isSet",
2315                                            "argv": [
2316                                                {
2317                                                    "ref": "AccountId"
2318                                                }
2319                                            ]
2320                                        }
2321                                    ],
2322                                    "endpoint": {
2323                                        "url": "https://{AccountId}.s3-control.{Region}.{partitionResult#dnsSuffix}",
2324                                        "properties": {
2325                                            "authSchemes": [
2326                                                {
2327                                                    "disableDoubleEncoding": true,
2328                                                    "name": "sigv4",
2329                                                    "signingName": "s3",
2330                                                    "signingRegion": "{Region}"
2331                                                }
2332                                            ]
2333                                        },
2334                                        "headers": {}
2335                                    },
2336                                    "type": "endpoint"
2337                                },
2338                                {
2339                                    "conditions": [
2340                                        {
2341                                            "fn": "booleanEquals",
2342                                            "argv": [
2343                                                {
2344                                                    "ref": "UseFIPS"
2345                                                },
2346                                                false
2347                                            ]
2348                                        },
2349                                        {
2350                                            "fn": "booleanEquals",
2351                                            "argv": [
2352                                                {
2353                                                    "ref": "UseDualStack"
2354                                                },
2355                                                false
2356                                            ]
2357                                        }
2358                                    ],
2359                                    "endpoint": {
2360                                        "url": "https://s3-control.{Region}.{partitionResult#dnsSuffix}",
2361                                        "properties": {
2362                                            "authSchemes": [
2363                                                {
2364                                                    "disableDoubleEncoding": true,
2365                                                    "name": "sigv4",
2366                                                    "signingName": "s3",
2367                                                    "signingRegion": "{Region}"
2368                                                }
2369                                            ]
2370                                        },
2371                                        "headers": {}
2372                                    },
2373                                    "type": "endpoint"
2374                                }
2375                            ],
2376                            "type": "tree"
2377                        },
2378                        {
2379                            "conditions": [],
2380                            "error": "Invalid region: region was not a valid DNS name.",
2381                            "type": "error"
2382                        }
2383                    ],
2384                    "type": "tree"
2385                }
2386            ],
2387            "type": "tree"
2388        },
2389        {
2390            "conditions": [],
2391            "error": "Region must be set",
2392            "type": "error"
2393        }
2394    ]
2395}