CloudFormation スタック削除時にリソースを保持する方法
こんにちは、育成推進チームのイドンホです
本記事では、Retainポリシーを追加し削除からリソースを保護する方法をご紹介いたします。
DynamoDB に Retain 削除ポリシーを適用
AWS CloudFormation を利用してインフラをコードで管理すると、スタック削除時にそのスタック内のすべてのリソースが一緒に削除されるのが基本動作です。しかし、重要なデータを保存しているリソースや、引き続き手動で管理したいリソースについては、削除せずに保持したい時があります。
そこで、CloudFormation の DeletionPolicy プロパティを使用することで、特定のリソースをスタック削除時に保持(Retain)することが可能となります。
DeletionPolicy プロパティの概要
CloudFormation の DeletionPolicyは、スタックの削除やリソースの更新時に、対象リソースに対してどのようなアクションを取るかを指定するための属性です。
主なオプションは以下の通りです。
- Retain
- スタック削除時にリソースを保持し、削除しません。重要なデータが含まれている場合などに利用します。
- RetainExceptOnCreate
- Retainと同じ動作ですが、 ”最初生成時点の初期化”を別で処理
- Snapshot
- リソースのスナップショットを作成します。
Retain を設定することで、誤ってスタックを削除してしまった場合でも、重要なリソースやデータが失われるのを防ぐことができます。
Retain 削除ポリシーを適用する例
例えば、データを格納している DynamoDB テーブルがある場合、スタック削除時にこのテーブルまで削除されてしまうと問題が発生する可能性があります。
そのため、DeletionPolicy を Retain に設定し、テーブルを保持するようにします。
以下は、YAML 形式の CloudFormation テンプレート例です。
AWSTemplateFormatVersion: '2010-09-09'
Description: >
CloudFormation スタック削除時に DynamoDB テーブルを Retain で保持するサンプルテンプレート
Resources:
MyDynamoDBTable:
Type: AWS::DynamoDB::Table
DeletionPolicy: Retain
Properties:
TableName: MyImportantTable
AttributeDefinitions:
- AttributeName: Id
AttributeType: S
KeySchema:
- AttributeName: Id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
Retain 削除ポリシーを使用する際の注意点
-
リソース管理の責任
- Retain を設定したリソースは、スタック削除後も残り続けるため、その後の運用や不要になった際の削除など、別途管理する必要があります。
-
コストの発生
- 保持されたリソースは引き続き料金が発生するため、運用中のコストに注意が必要です。
まとめ
CloudFormation の DeletionPolicy: Retain オプションを利用することで、DynamoDB テーブルなどのリソースを、スタック削除時にも保持することが可能です。
必要なリソースに対して適切な削除ポリシーを設定し、ご自身の状況に合わせた環境管理ができると思います。
ご不明点やご意見がありましたら、お気軽にお知らせください!
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイト をぜひご覧ください