AWS認定資格 WEB問題集&徹底解説

デベロッパー–アソシエイト

正解 A問題
要復習(もう一度解きたい問題) 1 2 3 4
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
あるチームが AWS Cloud Development Kit(CDK)を使用してアプリケーションの開発・管理を行っている。CDKでアプリケーションスタックを更新した後に問題が発生した場合、以前の状態に戻すためにはどのツールを活用すればよいか。
  • AWS CDK はデプロイ時に AWS CloudFormation スタックを生成するため、CloudFormation の変更セット機能やスタックのロールバック機能を利用して以前の状態に戻すことができる。
  • AWS CDK はシンセサイズ(cdk synth)フェーズのみで変更を管理するため、デプロイ後のロールバックは AWS CLI を使用して手動で行う必要がある。
  • AWS CDK はデプロイ時に Amazon S3 にスナップショットを自動保存するため、S3 バケットから以前のバージョンを取得して復元できる。
  • AWS CDK は AWS CodePipeline と統合されている場合のみロールバックが可能であり、単体では以前の状態への復元機能を持たない。
解説 頻出度★★★★★
この問題は、AWS CDK の実体は「CloudFormation テンプレートを生成してデプロイする仕組み」だと理解し、更新失敗時の復元も CloudFormation のスタック機能(自動ロールバック・変更セット)に委ねられると気づけるかがポイント
正解

A. AWS CDK はデプロイ時に AWS CloudFormation スタックを生成するため、CloudFormation の変更セット機能やスタックのロールバック機能を利用して以前の状態に戻すことができる。

CDK は cdk synth でコードを CloudFormation テンプレートに合成し、cdk deploy でそのテンプレートを CloudFormation スタックとしてデプロイする。つまり実体は CloudFormation スタックであり、スタックの更新中にエラーが起きれば自動的に直前の状態へロールバックされる。
意図的に前の状態へ戻したい場合も、変更セット(Change Set)で差分を確認したうえで適用する/スタックのロールバック操作を行うといった CloudFormation の変更管理機能をそのまま利用できる。
CDK 固有の別の復元機構を覚える必要がない、という点が本問の要点。

B. AWS CDK はシンセサイズ(cdk synth)フェーズのみで変更を管理するため、デプロイ後のロールバックは AWS CLI を使用して手動で行う必要がある。

cdk synth はテンプレートを生成するだけのフェーズで、デプロイ後の状態管理とは無関係。
また、デプロイ後の復元を AWS CLI で手動実施する必要はない。CloudFormation がスタック更新の失敗時に自動ロールバックを行うため、「手動でやるしかない」という前提が誤り。

C. AWS CDK はデプロイ時に Amazon S3 にスナップショットを自動保存するため、S3 バケットから以前のバージョンを取得して復元できる。

CDK が Amazon S3 にスナップショットを自動保存して復元する仕組みは存在しない
CDK は確かにデプロイ用のアセット(テンプレートや Lambda コード等)をブートストラップ時に作られる S3 バケットにアップロードするが、これはデプロイ用の資材置き場であって、状態を巻き戻すためのスナップショットではない
変更管理はあくまで CloudFormation のスタック(およびその履歴)が担う。

D. AWS CDK は AWS CodePipeline と統合されている場合のみロールバックが可能であり、単体では以前の状態への復元機能を持たない。

ロールバックは CloudFormation スタックの機能であり、AWS CodePipeline との統合は前提条件ではない。
CDK 単体で cdk deploy しても、失敗時の自動ロールバックや変更セットによる復元は利用できる。
CodePipeline(CDK Pipelines)は CI/CD の自動化のための仕組みであって、ロールバック可否を左右するものではない。

構成図

CDK アプリ ──cdk synth──▶ CloudFormation テンプレート ──cdk deploy──▶ CloudFormation スタック
                                                                          │ 更新失敗・問題発生
                                                                          ▼
                                                          自動ロールバック / 変更セットで前状態へ
これだけ覚える(記憶フック)
CDK の下にいるのは CloudFormation。synth でテンプレート生成、deploy でスタック更新。ロールバックもスタックの機能。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
CDK でデプロイしたスタックを以前の状態に戻したい CDK はデプロイ時に CloudFormation スタックを生成する。復元は CloudFormation の自動ロールバック/変更セットで行える
→選択肢(A)が正解
デプロイ後の状態管理は何が担うのか cdk synth はテンプレート生成フェーズにすぎず、状態管理はしない。手動 CLI で戻す必要もない
→選択肢(B)を消す
変更履歴・スナップショットはどこにあるのか CDK が S3 に置くのはデプロイ用アセットであって状態のスナップショットではない。履歴は CloudFormation スタックが持つ
→選択肢(C)を消す
CI/CD パイプラインの有無に依存するか ロールバックはCloudFormation の標準機能。CodePipeline との統合は必須条件ではない
→選択肢(D)を消す
ひっかけポイント
  • 「CDK 固有のロールバック機能」を探させるのが本問の罠。CDK は CloudFormation の上位ラッパーであり、実行・状態管理・ロールバックはすべて CloudFormation 側の話になる
  • 選択肢 C の S3 は紛らわしい。cdk bootstrap で作られる S3 バケットはアセット(テンプレート・Lambda の zip 等)の置き場であって、スタック状態のスナップショットではない
  • 選択肢 B の「cdk synth」は正しい用語なので技術的に正しく見えるが、synth はテンプレートを出力するだけ。用語が本物かどうかではなく、役割が合っているかで判断する
  • CloudFormation は更新失敗時にデフォルトで自動ロールバックする(ロールバックを無効化する設定もある)。「手動でしか戻せない」という記述を見たら疑う
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「デプロイ前にどのリソースがどう変わるか確認したい」 cdk diff(内部的には変更セット)で差分を確認するのが正解軸に。
ロールバック中にさらに失敗してスタックが UPDATE_ROLLBACK_FAILED になった」 ContinueUpdateRollback(必要ならリソースをスキップ)で復旧するのが正解に。
「CDK アプリを複数環境へ自動デプロイしたい」 CDK Pipelines(CodePipeline)による自動化が正解軸に。
「スタック削除時もデータベースだけは残したい RemovalPolicy.RETAIN(CloudFormation の DeletionPolicy Retain)の設定が問われる。
「デプロイ前に CDK が使うS3 バケットや IAM ロールが無いと言われた」 cdk bootstrap の実行が正解になる。
関連サービスの解説 AWS Cloud Development Kit (CDK)
AWS CloudFormation
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 76%
No.9 解説
あるチームが AWS Cloud Development Kit(CDK)を使用してアプリケーションの開発・管理を行っている。CDKでアプリケーションスタックを更新した後に問題が発生した場合、以前の状態に戻すためにはどのツールを活用すればよいか。
  • AWS CDK はデプロイ時に AWS CloudFormation スタックを生成するため、CloudFormation の変更セット機能やスタックのロールバック機能を利用して以前の状態に戻すことができる。
  • AWS CDK はシンセサイズ(cdk synth)フェーズのみで変更を管理するため、デプロイ後のロールバックは AWS CLI を使用して手動で行う必要がある。
  • AWS CDK はデプロイ時に Amazon S3 にスナップショットを自動保存するため、S3 バケットから以前のバージョンを取得して復元できる。
  • AWS CDK は AWS CodePipeline と統合されている場合のみロールバックが可能であり、単体では以前の状態への復元機能を持たない。

(会員限定)当問題の評価をお願いします。改善に活用します。