chr*_*ris 24 amazon-web-services aws-cloudformation availability-zone
我有一个尝试创建VPC的cloudformation脚本,每个AZ有一个子网.
当我跑:
aws ec2 describe-availablity-zones
Run Code Online (Sandbox Code Playgroud)
我得到了4个区域:
"AvailabilityZones": [
{
"State": "available",
"RegionName": "us-east-1",
"Messages": [],
"ZoneName": "us-east-1a"
},
{
"State": "available",
"RegionName": "us-east-1",
"Messages": [],
"ZoneName": "us-east-1b"
},
{
"State": "available",
"RegionName": "us-east-1",
"Messages": [],
"ZoneName": "us-east-1c"
},
{
"State": "available",
"RegionName": "us-east-1",
"Messages": [],
"ZoneName": "us-east-1d"
}
]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试创建堆栈时,出现错误:
"ResourceStatusReason": "Value (us-east-1a) for parameter availabilityZone
is invalid. Subnets can currently only be created in the following
availability zones: us-east-1c, us-east-1b, us-east-1d.",
Run Code Online (Sandbox Code Playgroud)
我正在指定AZ
"AvailabilityZone" : {
"Fn::Select" : [ "0", { "Fn::GetAZs" : "" } ]
},
Run Code Online (Sandbox Code Playgroud)
有没有办法检查AZ是否真的可用于创建子网?
这可能对CLI方法或您的确切方案没有帮助 - 但使用AWS管理控制台,这可以顺利进行.
通过CloudFormation参数的最新更新,您可以精确定位与指定AZ相关的AZ.
在DR/DR演练期间以及使CFN模板区域独立时,这将非常方便.

"Parameters": {
"SubnetAZ": {
"Description": "Availability Zone of the Subnet",
"Type": "AWS::EC2::AvailabilityZone::Name"
}
}
Run Code Online (Sandbox Code Playgroud)
有关CloudFormation参数的更多信息
不幸的是我遇到了同样的问题.CloudFormation中没有方法可以执行此操作,并且每个AWS账户的区域可以不同.这是VPC基础设施的限制,可能不会改变.您唯一的选择是硬编码您在CloudFOrmation模板中找到的区域而不是Fn :: Select,例如:
"AvailabilityZone":"us-east-1b"
或者,如果您将AvailabilityZone留空,则默认行为将是AWS将自动为您选择一个.
只要您在每个AZ中都有一个带子网的默认vpc,Fn :: GetAZs将提供可用和可用的可用区域!只要你不手动删除它们,所有新的aws帐户都有.
| 归档时间: |
|
| 查看次数: |
11014 次 |
| 最近记录: |