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": "booleanEquals", 117 "argv": [ 118 { 119 "ref": "UseFIPS" 120 }, 121 true 122 ] 123 }, 124 { 125 "fn": "booleanEquals", 126 "argv": [ 127 { 128 "ref": "UseDualStack" 129 }, 130 true 131 ] 132 } 133 ], 134 "rules": [ 135 { 136 "conditions": [ 137 { 138 "fn": "booleanEquals", 139 "argv": [ 140 true, 141 { 142 "fn": "getAttr", 143 "argv": [ 144 { 145 "ref": "PartitionResult" 146 }, 147 "supportsFIPS" 148 ] 149 } 150 ] 151 }, 152 { 153 "fn": "booleanEquals", 154 "argv": [ 155 true, 156 { 157 "fn": "getAttr", 158 "argv": [ 159 { 160 "ref": "PartitionResult" 161 }, 162 "supportsDualStack" 163 ] 164 } 165 ] 166 } 167 ], 168 "rules": [ 169 { 170 "conditions": [], 171 "endpoint": { 172 "url": "https://states-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", 173 "properties": {}, 174 "headers": {} 175 }, 176 "type": "endpoint" 177 } 178 ], 179 "type": "tree" 180 }, 181 { 182 "conditions": [], 183 "error": "FIPS and DualStack are enabled, but this partition does not support one or both", 184 "type": "error" 185 } 186 ], 187 "type": "tree" 188 }, 189 { 190 "conditions": [ 191 { 192 "fn": "booleanEquals", 193 "argv": [ 194 { 195 "ref": "UseFIPS" 196 }, 197 true 198 ] 199 } 200 ], 201 "rules": [ 202 { 203 "conditions": [ 204 { 205 "fn": "booleanEquals", 206 "argv": [ 207 { 208 "fn": "getAttr", 209 "argv": [ 210 { 211 "ref": "PartitionResult" 212 }, 213 "supportsFIPS" 214 ] 215 }, 216 true 217 ] 218 } 219 ], 220 "rules": [ 221 { 222 "conditions": [ 223 { 224 "fn": "stringEquals", 225 "argv": [ 226 { 227 "ref": "Region" 228 }, 229 "us-gov-west-1" 230 ] 231 } 232 ], 233 "endpoint": { 234 "url": "https://states.us-gov-west-1.amazonaws.com", 235 "properties": {}, 236 "headers": {} 237 }, 238 "type": "endpoint" 239 }, 240 { 241 "conditions": [], 242 "endpoint": { 243 "url": "https://states-fips.{Region}.{PartitionResult#dnsSuffix}", 244 "properties": {}, 245 "headers": {} 246 }, 247 "type": "endpoint" 248 } 249 ], 250 "type": "tree" 251 }, 252 { 253 "conditions": [], 254 "error": "FIPS is enabled but this partition does not support FIPS", 255 "type": "error" 256 } 257 ], 258 "type": "tree" 259 }, 260 { 261 "conditions": [ 262 { 263 "fn": "booleanEquals", 264 "argv": [ 265 { 266 "ref": "UseDualStack" 267 }, 268 true 269 ] 270 } 271 ], 272 "rules": [ 273 { 274 "conditions": [ 275 { 276 "fn": "booleanEquals", 277 "argv": [ 278 true, 279 { 280 "fn": "getAttr", 281 "argv": [ 282 { 283 "ref": "PartitionResult" 284 }, 285 "supportsDualStack" 286 ] 287 } 288 ] 289 } 290 ], 291 "rules": [ 292 { 293 "conditions": [], 294 "endpoint": { 295 "url": "https://states.{Region}.{PartitionResult#dualStackDnsSuffix}", 296 "properties": {}, 297 "headers": {} 298 }, 299 "type": "endpoint" 300 } 301 ], 302 "type": "tree" 303 }, 304 { 305 "conditions": [], 306 "error": "DualStack is enabled but this partition does not support DualStack", 307 "type": "error" 308 } 309 ], 310 "type": "tree" 311 }, 312 { 313 "conditions": [], 314 "endpoint": { 315 "url": "https://states.{Region}.{PartitionResult#dnsSuffix}", 316 "properties": {}, 317 "headers": {} 318 }, 319 "type": "endpoint" 320 } 321 ], 322 "type": "tree" 323 } 324 ], 325 "type": "tree" 326 }, 327 { 328 "conditions": [], 329 "error": "Invalid Configuration: Missing Region", 330 "type": "error" 331 } 332 ] 333}