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}