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 "UseDualStack": { 11 "builtIn": "AWS::UseDualStack", 12 "required": true, 13 "default": false, 14 "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.", 15 "type": "Boolean" 16 }, 17 "UseFIPS": { 18 "builtIn": "AWS::UseFIPS", 19 "required": true, 20 "default": false, 21 "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.", 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 }, 31 "rules": [ 32 { 33 "conditions": [ 34 { 35 "fn": "isSet", 36 "argv": [ 37 { 38 "ref": "Endpoint" 39 } 40 ] 41 } 42 ], 43 "rules": [ 44 { 45 "conditions": [ 46 { 47 "fn": "booleanEquals", 48 "argv": [ 49 { 50 "ref": "UseFIPS" 51 }, 52 true 53 ] 54 } 55 ], 56 "error": "Invalid Configuration: FIPS and custom endpoint are not supported", 57 "type": "error" 58 }, 59 { 60 "conditions": [ 61 { 62 "fn": "booleanEquals", 63 "argv": [ 64 { 65 "ref": "UseDualStack" 66 }, 67 true 68 ] 69 } 70 ], 71 "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", 72 "type": "error" 73 }, 74 { 75 "conditions": [], 76 "endpoint": { 77 "url": { 78 "ref": "Endpoint" 79 }, 80 "properties": {}, 81 "headers": {} 82 }, 83 "type": "endpoint" 84 } 85 ], 86 "type": "tree" 87 }, 88 { 89 "conditions": [ 90 { 91 "fn": "isSet", 92 "argv": [ 93 { 94 "ref": "Region" 95 } 96 ] 97 } 98 ], 99 "rules": [ 100 { 101 "conditions": [ 102 { 103 "fn": "aws.partition", 104 "argv": [ 105 { 106 "ref": "Region" 107 } 108 ], 109 "assign": "PartitionResult" 110 } 111 ], 112 "rules": [ 113 { 114 "conditions": [ 115 { 116 "fn": "stringEquals", 117 "argv": [ 118 { 119 "fn": "getAttr", 120 "argv": [ 121 { 122 "ref": "PartitionResult" 123 }, 124 "name" 125 ] 126 }, 127 "aws" 128 ] 129 }, 130 { 131 "fn": "booleanEquals", 132 "argv": [ 133 { 134 "ref": "UseFIPS" 135 }, 136 false 137 ] 138 }, 139 { 140 "fn": "booleanEquals", 141 "argv": [ 142 { 143 "ref": "UseDualStack" 144 }, 145 false 146 ] 147 } 148 ], 149 "endpoint": { 150 "url": "https://ce.us-east-1.amazonaws.com", 151 "properties": { 152 "authSchemes": [ 153 { 154 "name": "sigv4", 155 "signingName": "ce", 156 "signingRegion": "us-east-1" 157 } 158 ] 159 }, 160 "headers": {} 161 }, 162 "type": "endpoint" 163 }, 164 { 165 "conditions": [ 166 { 167 "fn": "stringEquals", 168 "argv": [ 169 { 170 "fn": "getAttr", 171 "argv": [ 172 { 173 "ref": "PartitionResult" 174 }, 175 "name" 176 ] 177 }, 178 "aws-cn" 179 ] 180 }, 181 { 182 "fn": "booleanEquals", 183 "argv": [ 184 { 185 "ref": "UseFIPS" 186 }, 187 false 188 ] 189 }, 190 { 191 "fn": "booleanEquals", 192 "argv": [ 193 { 194 "ref": "UseDualStack" 195 }, 196 false 197 ] 198 } 199 ], 200 "endpoint": { 201 "url": "https://ce.cn-northwest-1.amazonaws.com.cn", 202 "properties": { 203 "authSchemes": [ 204 { 205 "name": "sigv4", 206 "signingName": "ce", 207 "signingRegion": "cn-northwest-1" 208 } 209 ] 210 }, 211 "headers": {} 212 }, 213 "type": "endpoint" 214 }, 215 { 216 "conditions": [ 217 { 218 "fn": "booleanEquals", 219 "argv": [ 220 { 221 "ref": "UseFIPS" 222 }, 223 true 224 ] 225 }, 226 { 227 "fn": "booleanEquals", 228 "argv": [ 229 { 230 "ref": "UseDualStack" 231 }, 232 true 233 ] 234 } 235 ], 236 "rules": [ 237 { 238 "conditions": [ 239 { 240 "fn": "booleanEquals", 241 "argv": [ 242 true, 243 { 244 "fn": "getAttr", 245 "argv": [ 246 { 247 "ref": "PartitionResult" 248 }, 249 "supportsFIPS" 250 ] 251 } 252 ] 253 }, 254 { 255 "fn": "booleanEquals", 256 "argv": [ 257 true, 258 { 259 "fn": "getAttr", 260 "argv": [ 261 { 262 "ref": "PartitionResult" 263 }, 264 "supportsDualStack" 265 ] 266 } 267 ] 268 } 269 ], 270 "rules": [ 271 { 272 "conditions": [], 273 "endpoint": { 274 "url": "https://ce-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", 275 "properties": {}, 276 "headers": {} 277 }, 278 "type": "endpoint" 279 } 280 ], 281 "type": "tree" 282 }, 283 { 284 "conditions": [], 285 "error": "FIPS and DualStack are enabled, but this partition does not support one or both", 286 "type": "error" 287 } 288 ], 289 "type": "tree" 290 }, 291 { 292 "conditions": [ 293 { 294 "fn": "booleanEquals", 295 "argv": [ 296 { 297 "ref": "UseFIPS" 298 }, 299 true 300 ] 301 } 302 ], 303 "rules": [ 304 { 305 "conditions": [ 306 { 307 "fn": "booleanEquals", 308 "argv": [ 309 { 310 "fn": "getAttr", 311 "argv": [ 312 { 313 "ref": "PartitionResult" 314 }, 315 "supportsFIPS" 316 ] 317 }, 318 true 319 ] 320 } 321 ], 322 "rules": [ 323 { 324 "conditions": [], 325 "endpoint": { 326 "url": "https://ce-fips.{Region}.{PartitionResult#dnsSuffix}", 327 "properties": {}, 328 "headers": {} 329 }, 330 "type": "endpoint" 331 } 332 ], 333 "type": "tree" 334 }, 335 { 336 "conditions": [], 337 "error": "FIPS is enabled but this partition does not support FIPS", 338 "type": "error" 339 } 340 ], 341 "type": "tree" 342 }, 343 { 344 "conditions": [ 345 { 346 "fn": "booleanEquals", 347 "argv": [ 348 { 349 "ref": "UseDualStack" 350 }, 351 true 352 ] 353 } 354 ], 355 "rules": [ 356 { 357 "conditions": [ 358 { 359 "fn": "booleanEquals", 360 "argv": [ 361 true, 362 { 363 "fn": "getAttr", 364 "argv": [ 365 { 366 "ref": "PartitionResult" 367 }, 368 "supportsDualStack" 369 ] 370 } 371 ] 372 } 373 ], 374 "rules": [ 375 { 376 "conditions": [], 377 "endpoint": { 378 "url": "https://ce.{Region}.{PartitionResult#dualStackDnsSuffix}", 379 "properties": {}, 380 "headers": {} 381 }, 382 "type": "endpoint" 383 } 384 ], 385 "type": "tree" 386 }, 387 { 388 "conditions": [], 389 "error": "DualStack is enabled but this partition does not support DualStack", 390 "type": "error" 391 } 392 ], 393 "type": "tree" 394 }, 395 { 396 "conditions": [], 397 "endpoint": { 398 "url": "https://ce.{Region}.{PartitionResult#dnsSuffix}", 399 "properties": {}, 400 "headers": {} 401 }, 402 "type": "endpoint" 403 } 404 ], 405 "type": "tree" 406 } 407 ], 408 "type": "tree" 409 }, 410 { 411 "conditions": [], 412 "error": "Invalid Configuration: Missing Region", 413 "type": "error" 414 } 415 ] 416}