如何通过CloudFormation在非默认VPC上创建弹性伸缩组?



我正在尝试通过在非默认 VPC上形成云来创建自动扩展组,但收到两个错误:

安全组

"安全组"在默认 VPC 中不存在

此用户没有默认 VPC

我的第一次尝试是在没有默认 VPC 的区域上进行的,那是我第一次获得No default VPC for this user时,我认为当我不尝试使用它时它想要/需要默认 VPC 很奇怪。然后,我继续重新创建默认 VPC,并得到了The security group 'SecurityGroup' does not exist in default VPC

我继续在没有自动缩放部分的情况下运行我的模板,只是为了让网络基础设施到位,这样我就可以在控制台上玩(请参阅下文(

Resources:
VpcT:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 192.168.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
PublicSubnet1:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: !Sub ${AWS::Region}a
VpcId: !Ref VpcT
CidrBlock: 192.168.0.0/24
MapPublicIpOnLaunch: true
PublicSubnet2:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: !Sub ${AWS::Region}b
VpcId: !Ref VpcT
CidrBlock: 192.168.1.0/24
MapPublicIpOnLaunch: true

SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: sg
VpcId: !Ref VpcT
SecurityGroupIngress:
- IpProtocol: -1
CidrIp: 0.0.0.0/0
SecurityGroupEgress:
- IpProtocol: -1
CidrIp: 0.0.0.0/0

使用该模板,我得到了一个VPC(VpcT(,两个分配自动IP地址的子网(PublicSubnet1和PublicSubnet2(,最后是一个安全组(安全组(。

通过控制台并配置了我的启动配置,并通过我选择的高级详细信息Assign a public IP address to every instance然后在您选择安全组的最后一部分,我收到了以下消息No default VPC found Select another VPC, or contact AWS Support if you want to create a new default VPC我只是忽略并最终确定了启动配置

继续使用先前创建的启动配置创建自动扩展组,并在尝试创建启动配置No default VPC found Select another VPC, or contact AWS Support if you want to create a new default VPC时收到完全相同的消息,我再次忽略了继续该过程并选择了我之前创建的 PublicSubnet1 和 PublicSubnet2 并最终确定了自动扩展组配置。一切正常,我的自动伸缩组上指定的实例已创建,一切正常。

所以我验证了您可以在没有默认 VPC 的情况下创建一个自动伸缩组,并且我的 cloudformation 自动伸缩模板上可能缺少一些东西(请参阅下文(

LaunchConfig:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
LaunchConfigurationName: LaunchConfig
AssociatePublicIpAddress: true
ImageId: ami-02ccb28830b645a41
EbsOptimized: false
InstanceMonitoring: false
InstanceType: t2.micro
KeyName: gh_rsa
SecurityGroups:
- SecurityGroup
AutoScalingGrpPubInstances:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
Cooldown: 300
HealthCheckGracePeriod: 300
VPCZoneIdentifier:
- !Ref PublicSubnet1
- !Ref PublicSubnet2
LaunchConfigurationName: !Ref LaunchConfig
DesiredCapacity: 1
MaxSize: 3
MinSize: 1

根据文档,我需要提供的所有内容都是我尝试使用!Ref PublicSubnetX和实际子网 IDsubnet-0e15c1ff36f7a228bVPCZoneIdentifier创建实例的 Auto Scaling 组,但没有运气。

有人可以指出我如何解决这个问题的正确方向吗?

如今,我建议迁移到AWS::EC2::LaunchTemplate而不是使用AWS::AutoScaling::LaunchConfiguration。前者是可变的,并提供了更多的功能。

知道了,您需要引用安全组。 您缺少!Ref.

LaunchConfig:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
LaunchConfigurationName: LaunchConfig
AssociatePublicIpAddress: true
ImageId: ami-02ccb28830b645a41
EbsOptimized: false
InstanceMonitoring: false
InstanceType: t2.micro
KeyName: gh_rsa
SecurityGroups:
- !Ref SecurityGroup

希望这有帮助。

最新更新