Amazon-Cloudformation

CloudFormation - 更新 ec2 實例的 SecurityGroupIds 它重新創建實例而不是修改相同的實例

  • December 17, 2021

我用 cloudformation 創建了 ec2 實例。當我嘗試在同一個模板中更新實例的安全組時,cloudformation 會重新創建實例而不是修改相同的實例(就像在 terraform 中一樣)。如何在不重新創建實例的情況下更新 SecurityGroup?

例如下面的模板 -

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

我用你的堆棧副本對此進行了測試,並看到了相同的行為。但是,當我創建一個新的 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

引用自:https://serverfault.com/questions/1087578