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://codepipeline-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 "endpoint": { 224 "url": "https://codepipeline-fips.{Region}.{PartitionResult#dnsSuffix}", 225 "properties": {}, 226 "headers": {} 227 }, 228 "type": "endpoint" 229 } 230 ], 231 "type": "tree" 232 }, 233 { 234 "conditions": [], 235 "error": "FIPS is enabled but this partition does not support FIPS", 236 "type": "error" 237 } 238 ], 239 "type": "tree" 240 }, 241 { 242 "conditions": [ 243 { 244 "fn": "booleanEquals", 245 "argv": [ 246 { 247 "ref": "UseDualStack" 248 }, 249 true 250 ] 251 } 252 ], 253 "rules": [ 254 { 255 "conditions": [ 256 { 257 "fn": "booleanEquals", 258 "argv": [ 259 true, 260 { 261 "fn": "getAttr", 262 "argv": [ 263 { 264 "ref": "PartitionResult" 265 }, 266 "supportsDualStack" 267 ] 268 } 269 ] 270 } 271 ], 272 "rules": [ 273 { 274 "conditions": [], 275 "endpoint": { 276 "url": "https://codepipeline.{Region}.{PartitionResult#dualStackDnsSuffix}", 277 "properties": {}, 278 "headers": {} 279 }, 280 "type": "endpoint" 281 } 282 ], 283 "type": "tree" 284 }, 285 { 286 "conditions": [], 287 "error": "DualStack is enabled but this partition does not support DualStack", 288 "type": "error" 289 } 290 ], 291 "type": "tree" 292 }, 293 { 294 "conditions": [], 295 "endpoint": { 296 "url": "https://codepipeline.{Region}.{PartitionResult#dnsSuffix}", 297 "properties": {}, 298 "headers": {} 299 }, 300 "type": "endpoint" 301 } 302 ], 303 "type": "tree" 304 } 305 ], 306 "type": "tree" 307 }, 308 { 309 "conditions": [], 310 "error": "Invalid Configuration: Missing Region", 311 "type": "error" 312 } 313 ] 314}