環境の削除
CloudFormationのスタックを削除すると作成したリソースが削除されます。
対象のスタックを選択し、削除
ボタンをクリックします。
DeletionPolicy
EC2やRDSなどのデータが含まれるリソースについて、削除したくない場合もあります。
こういった場合に使用できるのがDeletionPolicy
です。
DeletionPolicyで指定できる値
- Delete
スタックの削除時にリソースと (該当する場合) そのすべてのコンテンツを削除します。 - Retain
スタックを削除する際に、リソースやコンテンツを削除せず保持します。 - RetainExceptOnCreate
スタック操作がロールバックされても、新しく作成されたリソースは削除されますが、既存のリソースは保持されます。これにより、重要なリソースとそのデータを保持しながら、新しい、空の、未使用のリソースを確実に削除できます。 - Snapshot
スナップショットをサポートするリソースについては、CloudFormation は削除前に、リソースのスナップショットを作成します。
EC2インスタンスにDeletionPolicy
を指定する例
EC2Instance:
Type: AWS::EC2::Instance
DeletionPolicy: Retain
Properties:
ImageId: "ami-04beabd6a4fb6ab6f"
InstanceType: !Ref InstanceType
EbsOptimized: false
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
Encrypted: false
DeleteOnTermination: true
Iops: 3000
VolumeSize: 16
VolumeType: gp3
NetworkInterfaces:
- SubnetId: !Ref PublicSubnet1
AssociatePublicIpAddress: true
DeviceIndex: "0"
GroupSet:
- !Ref Ec2SecurityGroup
PrivateDnsNameOptions:
HostnameType: ip-name
EnableResourceNameDnsARecord: false
EnableResourceNameDnsAAAARecord: false
Tags:
- Key: Name
Value: !Sub webserver#1-${UserName}
このテンプレートをデプロイした後、実際にスタックを削除するとエラーになります。
これは、EC2を保持することで、EC2が配置されたVPCやサブネットの削除に失敗するからです。しかも、削除可能なものは削除されるため、すごく中途半端な状態で残ってしまいます。
削除することまで考慮してスタック分割をしておくとベストです。
テンプレートファイル