问题描述
最近我开始探索 AWS CloudFormation。我对使用 Fn::GetAZs 动态获取可用区有疑问吗?我希望可用区不被硬编码。 YAML格式的代码如下:-
AWstemplateFormatVersion: 2010-09-09
Description: Hardcoded Value of Availability zone
Parameters:
MyKeyName:
Description: Arshan Select the key Name from the boelow
Type: AWS::EC2::KeyPair::KeyName
MyZone:
Description: Select the MyAZone
Type: String
Default: us-east-1
AllowedValues:
- us-east-1
- us-east-2
Resources:
DevEC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: ami-04aa88aebb9fefd83
KeyName: !Ref MyKeyName
SecurityGroup: !Ref SSHSecurityGroup
AvailabilityZone: !Ref MyZone
SSHSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: My Sg
SecurityIngress:
IpProtocol: tcp
ToPort: 22
FromPort: 22
Cidr: 0.0.0.0/0
SecurityEgress:
IpProtocol: tcp
ToPort: 8080
FromPort: 8080
Cidr: 0.0.0.0/0
解决方法
如果您想在参数 Fn::GetAZs
中使用 MyZone
来定义允许的 AZ,则不能这样做。 CloudFormation不支持。您的 MyZone
必须硬编码您想要允许的可用区。
Fn::GetAZs
稍后可以在您的资源中使用,但不能在 MyZone
参数中使用。