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 "type": "tree", 44 "rules": [ 45 { 46 "conditions": [ 47 { 48 "fn": "booleanEquals", 49 "argv": [ 50 { 51 "ref": "UseFIPS" 52 }, 53 true 54 ] 55 } 56 ], 57 "error": "Invalid Configuration: FIPS and custom endpoint are not supported", 58 "type": "error" 59 }, 60 { 61 "conditions": [ 62 { 63 "fn": "booleanEquals", 64 "argv": [ 65 { 66 "ref": "UseDualStack" 67 }, 68 true 69 ] 70 } 71 ], 72 "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", 73 "type": "error" 74 }, 75 { 76 "conditions": [], 77 "endpoint": { 78 "url": { 79 "ref": "Endpoint" 80 }, 81 "properties": {}, 82 "headers": {} 83 }, 84 "type": "endpoint" 85 } 86 ] 87 }, 88 { 89 "conditions": [ 90 { 91 "fn": "isSet", 92 "argv": [ 93 { 94 "ref": "Region" 95 } 96 ] 97 } 98 ], 99 "type": "tree", 100 "rules": [ 101 { 102 "conditions": [ 103 { 104 "fn": "aws.partition", 105 "argv": [ 106 { 107 "ref": "Region" 108 } 109 ], 110 "assign": "PartitionResult" 111 } 112 ], 113 "type": "tree", 114 "rules": [ 115 { 116 "conditions": [ 117 { 118 "fn": "booleanEquals", 119 "argv": [ 120 { 121 "ref": "UseFIPS" 122 }, 123 true 124 ] 125 }, 126 { 127 "fn": "booleanEquals", 128 "argv": [ 129 { 130 "ref": "UseDualStack" 131 }, 132 true 133 ] 134 } 135 ], 136 "type": "tree", 137 "rules": [ 138 { 139 "conditions": [ 140 { 141 "fn": "booleanEquals", 142 "argv": [ 143 true, 144 { 145 "fn": "getAttr", 146 "argv": [ 147 { 148 "ref": "PartitionResult" 149 }, 150 "supportsFIPS" 151 ] 152 } 153 ] 154 }, 155 { 156 "fn": "booleanEquals", 157 "argv": [ 158 true, 159 { 160 "fn": "getAttr", 161 "argv": [ 162 { 163 "ref": "PartitionResult" 164 }, 165 "supportsDualStack" 166 ] 167 } 168 ] 169 } 170 ], 171 "type": "tree", 172 "rules": [ 173 { 174 "conditions": [], 175 "endpoint": { 176 "url": "https://acm-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", 177 "properties": {}, 178 "headers": {} 179 }, 180 "type": "endpoint" 181 } 182 ] 183 }, 184 { 185 "conditions": [], 186 "error": "FIPS and DualStack are enabled, but this partition does not support one or both", 187 "type": "error" 188 } 189 ] 190 }, 191 { 192 "conditions": [ 193 { 194 "fn": "booleanEquals", 195 "argv": [ 196 { 197 "ref": "UseFIPS" 198 }, 199 true 200 ] 201 } 202 ], 203 "type": "tree", 204 "rules": [ 205 { 206 "conditions": [ 207 { 208 "fn": "booleanEquals", 209 "argv": [ 210 true, 211 { 212 "fn": "getAttr", 213 "argv": [ 214 { 215 "ref": "PartitionResult" 216 }, 217 "supportsFIPS" 218 ] 219 } 220 ] 221 } 222 ], 223 "type": "tree", 224 "rules": [ 225 { 226 "conditions": [ 227 { 228 "fn": "stringEquals", 229 "argv": [ 230 "aws-us-gov", 231 { 232 "fn": "getAttr", 233 "argv": [ 234 { 235 "ref": "PartitionResult" 236 }, 237 "name" 238 ] 239 } 240 ] 241 } 242 ], 243 "endpoint": { 244 "url": "https://acm.{Region}.amazonaws.com", 245 "properties": {}, 246 "headers": {} 247 }, 248 "type": "endpoint" 249 }, 250 { 251 "conditions": [], 252 "endpoint": { 253 "url": "https://acm-fips.{Region}.{PartitionResult#dnsSuffix}", 254 "properties": {}, 255 "headers": {} 256 }, 257 "type": "endpoint" 258 } 259 ] 260 }, 261 { 262 "conditions": [], 263 "error": "FIPS is enabled but this partition does not support FIPS", 264 "type": "error" 265 } 266 ] 267 }, 268 { 269 "conditions": [ 270 { 271 "fn": "booleanEquals", 272 "argv": [ 273 { 274 "ref": "UseDualStack" 275 }, 276 true 277 ] 278 } 279 ], 280 "type": "tree", 281 "rules": [ 282 { 283 "conditions": [ 284 { 285 "fn": "booleanEquals", 286 "argv": [ 287 true, 288 { 289 "fn": "getAttr", 290 "argv": [ 291 { 292 "ref": "PartitionResult" 293 }, 294 "supportsDualStack" 295 ] 296 } 297 ] 298 } 299 ], 300 "type": "tree", 301 "rules": [ 302 { 303 "conditions": [], 304 "endpoint": { 305 "url": "https://acm.{Region}.{PartitionResult#dualStackDnsSuffix}", 306 "properties": {}, 307 "headers": {} 308 }, 309 "type": "endpoint" 310 } 311 ] 312 }, 313 { 314 "conditions": [], 315 "error": "DualStack is enabled but this partition does not support DualStack", 316 "type": "error" 317 } 318 ] 319 }, 320 { 321 "conditions": [], 322 "endpoint": { 323 "url": "https://acm.{Region}.{PartitionResult#dnsSuffix}", 324 "properties": {}, 325 "headers": {} 326 }, 327 "type": "endpoint" 328 } 329 ] 330 } 331 ] 332 }, 333 { 334 "conditions": [], 335 "error": "Invalid Configuration: Missing Region", 336 "type": "error" 337 } 338 ] 339}