Question#44(SAP-C02)
ある会社は、Amazon EC2 と AWS Lambda 上でアプリケーションを実行しています。アプリケーションは一時的なデータを Amazon S3 に保存しています。S3 オブジェクトは 24 時間後に削除されます。
同社は、AWS CloudFormation スタックを起動してアプリケーションの新しいバージョンをデプロイします。スタックは必要なリソースを作成します。新しいバージョンの検証が完了した後、同社は古いスタックを削除します。最近、ある開発用の古いスタックの削除が失敗しました。ソリューションアーキテクトは、大きなアーキテクチャ変更を行わずにこの問題を解決する必要があります。 この要件を満たすソリューションはどれですか?正解:A
ケットにまだオブジェクトが残っていたことが直接の原因である可能性が極めて高いです。運用中のユーザーデータ(起動スクリプト)や本番ロジックを変えずに解決するには、スタック削除の前にバケットを空にする処理を CloudFormation の実行フローに組み込むのが定石です。
選択肢 A のように、カスタムリソース(Lambda バッカー)を用意し、Delete イベント時に S3 の全オブジェクト(バージョン付きなら全バージョンと削除マーカーも含めて)を削除する処理を走らせれば、バケットを空にしてから CloudFormation がバケット自体を削除できます。CDK の autoDeleteObjects が内部で採るアプローチと同様の考え方で、最小のアーキテクチャ変更で問題を解決します。
コメント