CloudFormation - 更新 ec2 实例的 SecurityGroupIds 时,它会重新创建该实例,而不是修改相同的实例

CloudFormation - 更新 ec2 实例的 SecurityGroupIds 时,它会重新创建该实例,而不是修改相同的实例

我使用 cloudformation 创建了 ec2 实例。当我尝试在同一个模板中更新实例的安全组时,cloudformation 会重新创建实例,而不是修改实例(就像在 terraform 中一样)。如何在不重新创建实例的情况下更新实例的安全组?

例如以下模板 -

Resources:
  Ec2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0ed9277fb7eb570c9
      SecurityGroupIds:
        - sg-09d68774a93ec40df

现在,如果我尝试添加另一个 SecurityGroupIds,它会重新创建 ec2 -

Resources:
  Ec2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0ed9277fb7eb570c9
      SecurityGroupIds:
        - sg-09d68774a93ec40df
        - sg-05555951931eeaca7

答案1

我使用您的堆栈副本对此进行了测试,并看到了相同的行为。但是,当我创建一个新的 VPC(这是推荐的安全做法,应避免使用默认 VPC)时,安全组会干净地更新而无需替换。

我怀疑这与默认 VPC 上的行为有关,并且是预期的(但奇怪的)行为!

我建议您创建一个带有子网的新 VPC - VPC 向导在这里做得很好。转到服务 -> VPC 开始。

我的测试文件:

Resources:
  Ec2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: t2.micro
      # default Amazon Linux AMI
      ImageId: ami-0d37e07bd4ff37148
      SecurityGroupIds:
        # first security group I created in default:
        - sg-0d16f8e62054c9ed0
        # second security group I created in default:
        - sg-0ffc2a7a986ab0e8c

  OtherEc2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0d37e07bd4ff37148
      # Private subnet (no internet) in a new VPC:
      SubnetId: subnet-08dc2104d169a815e
      SecurityGroupIds:
        # First SG in that VPC:
        - sg-0ebec69e461a555b8
        # Second SG in that VPC:
        - sg-00b18a57193a12f5c

相关内容