SAP-C02-044 · 理解確認
理解確認:Infrastructure as CodeとCloudFormation
IaC・テンプレート・スタック・変更セット・ドリフトを使い、安全で再現可能なインフラストラクチャデプロイを判断します。 · 13問
開発・テスト・本番のインフラストラクチャを担当者が毎回コンソールから手動構築しており、環境ごとに意図しない設定差が発生している。最も適切な改善策はどれか。
B. IaCで共通定義を再利用し、環境差をパラメータ化する
C. 環境ごとに担当者を分け、各担当者が独自設定を管理する
D. AWSリソース名だけを統一し、設定値は各環境で手入力する
答えと解説
答え:B
IaCによってインフラストラクチャ定義をバージョン管理し、同じプロセスから再現できるようにすることで、人手による意図しない差を減らせます。
コードレビューで、開発者が作成したAWS CloudFormationテンプレートにParameters、Mappings、OutputsはあるがResourcesが存在しないことが分かった。開発者はこのテンプレートからVPCとサブネットが作成されると考えている。最も適切な指摘はどれか。
B. Parametersが必須セクションなので、ParametersにVPC名を書けばリソースを作成できる
C. Resourcesは必須セクションであり、プロビジョニングするAWSリソースをResourcesに定義する必要がある
D. CloudFormationテンプレートにはAWSリソースを定義せず、作成手順だけを記述する
答えと解説
答え:C
CloudFormationテンプレートではResourcesセクションが必須で、スタックがプロビジョニングするAWSリソースを定義します。ParametersやOutputsは用途に応じて利用します。
同じCloudFormation テンプレートから開発用と本番用のインフラストラクチャを別々にデプロイしたい。CloudFormationで実際のAWSリソース群を管理する単位はどれか。
B. 変更セット
C. ドリフト
D. 出力
答えと解説
答え:A
テンプレートは定義であり、スタックはテンプレートを基に作成されCloudFormationが管理するリソース群です。
開発と本番でアーキテクチャは共通だが、EC2インスタンスタイプなど一部の値だけ変えたい。設定 乖離をできるだけ抑えたい。最も適切なのはどれか。
B. 本番だけコンソールで手動変更し、差分を担当者が管理する
C. 各環境のリソースを個別に手動作成し、設定を都度合わせる
D. 共通テンプレートを再利用し、環境固有値だけをパラメータ化する
答えと解説
答え:D
共通定義と明示された差分を分けることで再現可能デプロイを維持しやすくなります。
重要なCloudFormation スタックのテンプレートを変更した。更新によってデータベースリソースが置換されないことをデプロイ前に確認したい。最も適切な方法はどれか。
B. 変更セットを作成し、予定される変更と置換の有無を確認する
C. ドリフト検知だけを実行し、置換予定も同時に確認する
D. CloudTrailイベント履歴だけを確認し、更新内容を推測する
答えと解説
答え:B
変更セットでは追加 / 変更 / 削除などの予定変更をプレビューし、変更に伴うリソース置換の可能性も確認できます。
現在のAWS CloudFormationの事前デプロイ検証について最も適切な説明はどれか。
B. デフォルトでは無効で、検証を有効化しなければ一切実行されない
C. 作成・更新・変更セットで既定有効だが、検証通過はデプロイ成功を保証しない
D. 検証を通過したスタック更新は実行時条件に関係なく必ず成功する
答えと解説
答え:C
現在 CloudFormationでは事前デプロイ検証がデフォルトで利用されます。変更セットでは追加検証もありますが、実行時障害まで排除するものではありません。
CloudFormationで管理しているセキュリティグループを運用者がコンソールから直接変更し、テンプレートで期待される設定と実リソースが異なる状態になった。この状態を表す用語として最も適切なのはどれか。
B. StackSet
C. ネストされたスタック
D. ロールバック
答えと解説
答え:A
テンプレートなどで期待される状態と実際のリソース設定が異なる状態がドリフトです。
CloudFormation ドリフト検知について正しいものを4つ選択してください。
B. AWSアカウント内のすべてのリソースプロパティを必ず検査する
C. ドリフト検知対応リソースタイプが対象となる
D. ドリフト検知自体は検出機能であり、自動的な整合性確認と同義ではない
E. 非対応リソースはNOT_CHECKEDになる場合がある
F. テンプレートで明示していないデフォルトプロパティも必ず比較対象になる
答えと解説
答え:A / C / D / E
ドリフト検知にはリソースタイプとプロパティの対象範囲があります。通常の検知は差分検出であり、自動修復そのものではありません。
CloudFormation スタック内のリソースがインシデント対応でコンソールから変更されている。従来型 変更セットだけを確認する場合に特に注意すべきことはどれか。
B. 従来型 変更セットは既存テンプレートしか使えず、新テンプレートを評価できない
C. 変更セットを作成するとコンソールの手動変更が自動で削除される
D. 従来型変更セットは実リソースのドリフト検出を主目的としない
答えと解説
答え:D
従来型 変更セットは前回デプロイ時の状態と望ましい状態の比較が中心です。実際の状態に存在するドリフトは別途考慮する必要があります。
ドリフト対応変更セットについて正しいものを3つ選択してください。
B. すべてのリソース / プロパティで必ず実際の状態を取得して3方向比較する
C. 3方向比較非対応リソースでは前回デプロイ時の状態と望ましい状態を使う従来方式へフォールバックする
D. ドリフトを確認するだけで、実行してもスタックへ変更を適用することはできない
E. 実行時には対応範囲でドリフトを考慮して実際の状態を望ましい状態へ一致させることができる
答えと解説
答え:A / C / E
ドリフト対応変更セットは対応範囲で3方向比較を行い、非対応リソースでは従来比較へフォールバックします。実行時には対応範囲でドリフトを考慮した整合性確認が可能です。
本番スタックを更新する。変更内容を事前プレビューする必要はなく、テンプレートを送信したら更新を開始したい。CloudFormationの更新方法として最も適切なのはどれか。
B. スタックインポート
C. 直接更新
D. 変更セットを作成するだけ
答えと解説
答え:C
直接更新はテンプレートやパラメータの変更を送ると更新を開始します。事前プレビューが必要なら変更セットを利用します。
IaCとCloudFormationによる再現可能デプロイを維持する考え方として適切なものを3つ選択してください。
B. インフラストラクチャ定義をバージョン管理する
C. 共通テンプレートと明示的な環境差分を利用する
D. テンプレートと実際の状態の差を確認できるようにする
E. 手動変更を行った場合はテンプレートを更新せず実際の状態だけを正とする
答えと解説
答え:B / C / D
インフラストラクチャ定義のバージョン管理、再利用可能なテンプレート、実際の状態との整合確認によって再現性を維持します。
インシデント対応でCloudFormation管理リソースを手動変更した。その変更は一時対応ではなく、正式な設定として今後も維持することになった。IaCとして最も適切な対応はどれか。
B. 手動変更だけを残し、テンプレートとの差は永久に無視する
C. ドリフト検知を今後無効化する
D. スタックをCloudFormation管理外へ移す
答えと解説
答え:A
正式採用する変更ならIaC側へ反映し、希望するインフラストラクチャ定義と実際の状態を一致させます。