Amazon DOP-C02: Infrastructure as Codeと構成管理 — 学習ガイド

こちらの一部です: AWS DevOps Engineer Professional DOP-C02 — 学習ガイド. 検証済みの解答で練習: Amazon試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.

概要

AWSにおけるコードとしてのインフラストラクチャ (IaC) と構成管理は、再現性、監査性、ガバナンスを備えたインフラストラクチャとアプリケーションのプロビジョニングおよび構成を実現します。CloudFormationとAWS Cloud Development Kit (CDK) は、リソースを宣言的に、またはCloudFormationに合成されるコードを介して記述します。AWS OpsWorksやAWS Systems Managerなどの構成レイヤーは、EC2およびハイブリッド環境のフリート全体にわたるインスタンスの望ましい状態を強制し、報告します。シークレット、パラメータ、イメージのベーキングがライフサイクルを完成させ、イミュータブルでセキュアなデプロイを大規模に可能にします。

CloudFormationスタック、変更管理、ガバナンス

CloudFormationスタックはデプロイの単位です。影響範囲 (ブラスト半径) を最小限に抑えるため、ライフサイクルの境界と所有権に基づいてスタックを設計します。パラメータの使用は控えめにし、マッピングやSSMルックアップを用いた推奨されるデフォルト値を優先します。密結合を避けるため、OutputsとFn::ImportValueを介してエクスポートおよびインポートするのは、安定的で共有される値のみに限定します。

ネストされたスタックは、再利用可能なコンポーネントをカプセル化し、親テンプレートを小さく保ちます。親スタックは子スタックにパラメータを渡し、その出力を利用できるため、モジュラーアーキテクチャ (例: アプリケーションスタックが利用する共有ネットワークのネストされたスタック) が可能になります。ネストされたスタックは単一の関心事 (VPC、データ層、アプリ層) に集中させ、独立してバージョン管理します。

StackSetsは、単一のテンプレートを複数のアカウントやリージョンにわたってデプロイします。AWS Organizationsと連携したサービスマネージド型のアクセス許可モデルを使用すると、OUへの自動デプロイや新しいアカウントの自動インクルードが可能になります。ロールアウトを制御するために、オペレーション設定 (最大同時アカウント/リージョン数、障害耐性) を構成します。アカウントまたはリージョンごとのパラメータオーバーライドにより、標準テンプレートをローカルの制約に適応させることができます。StackSetおよびスタックインスタンスのドリフトを監視し、テンプレート外の変更を検出します。

変更セットは、安全で人間がレビュー可能な更新を提供します。常にCreateChangeSetを実行し、ExecuteChangeSetを実行する前に、リソースごとの影響、置換、潜在的なデータ損失を検査します。承認ゲート付きの自動化パイプラインに変更セットを統合します。

ドリフト検出は、スタックリソースがテンプレートと一致しているかを検証します。重要なスタックやStackSetsに対して定期的にドリフト検出を実行します。すべてのリソースタイプですべてのプロパティが評価されるわけではないこと (サポートされていないプロパティは「チェックされていません」と報告される) を理解してください。ドリフトはインシデントとして扱い、調査し、コンテキストを把握し、スタックの更新またはドリフトをコード化して再適用することで修正します。

スタックポリシーは、更新時に重要なリソースを保護するJSONドキュメントです。置き換え不可能なリソース (例: 本番データベース、Route 53ゾーン) への更新を拒否し、StackPolicyDuringUpdateBodyを使用して特定の変更のために一時的に限定的なパスを開き、その後より厳格なポリシーに戻します。これを終了保護やDeletionPolicy (Retain/Snapshot) と組み合わせてガードレールとします。外部状態を持つリソース (S3バケットなど) については、削除時の動作を計画します。バケットを削除前に空にする必要がある場合は、スタック削除時にオブジェクトをパージするカスタムリソースを実装します。

AWS CDKとCloudFormationの拡張性

AWS CDKは、使い慣れた言語 (TypeScript、Python、Java、.NET、Go) でインフラストラクチャをモデル化します。ConstructはCDKのビルディングブロックです。

CDKアプリは1つ以上のスタックを含みます。cdk synthの実行中、アプリはコンテキストルックアップ (例: VPC ID) を解決し、アセットをレンダリングし、CloudFormationテンプレートを生成します。デプロイする前に、cdk bootstrapが環境のアセットバケットとロールを作成します。cdk diffで変更をプレビューし、cdk deployでテンプレートとアセットを送信します。CDKは内部で変更セットを使用し、セキュリティに影響のある変更 (IAMやリソースの置換) を表示して確認を求めます。Aspectsを通じてスタックとリソースにタグを付け、組織全体のタグ付けポリシーを強制します。L2の抽象化では不十分な場合は、エスケープハッチ (node.defaultChild) を使用するか、L1コンストラクトに落とし込みます。

CloudFormationカスタムリソースは、API経由でアクセス可能なあらゆるものにIaCを拡張します。Lambdaベースのカスタムリソースは、RequestId、PhysicalResourceId、およびプロパティを含むCreate、Update、Deleteイベントを受け取ります。この関数は以下の要件を満たす必要があります。

Lambdaには最小権限のIAM実行ロールを使用し、API呼び出しにエクスポネンシャルバックオフを組み込み、RequestIdを介してログの相関付けを行います。大規模または長時間実行されるオペレーションには、実行トークンを待機するカスタムリソースを持つStep Functionsを検討してください。該当する場合は、再利用可能でバージョン管理されたプロバイダーとしてCloudFormation Registryを優先します。

Infrastructure as Codeにおけるシークレットとパラメータ

テンプレートやコードにシークレットをハードコーディングしないでください。デプロイ時に機密性の高い値を解決するには、動的参照を使用します。

動的参照を使用すると、シークレットがスタックテンプレートやイベントに保存されるのを防ぐことができます。CloudFormationが平文でログに記録するOutputsやリソースプロパティにシークレットを配置しないでください。CloudFormationの実行ロールに、参照される値を復号または取得する権限を付与し、KMS CMKのスコープをアクセスが必要なプリンシパルに限定します。

Parameter Storeは、シークレットではない設定(機能フラグ、AMI ID、エンドポイントなど)に最適です。バージョン管理されたSSMパラメータを使用して、安全なロールバックと環境間でのアトミックなプロモーションを実現します。CDKでは、ssm.StringParameter.fromStringParameterNameを使用して値をインポートするか、セキュアな値の場合はfromSecureStringParameterAttributesを使用し、パラメータの読み取りをユーザーデータやアプリケーションのブートストラップに組み込みます。

Secrets Managerは、ライフサイクル管理、ローテーション、監査のために設計されています。サポートされているエンジン(RDS、Aurora)やカスタムLambdaとローテーションを統合します。古いマテリアルの拡散を避けるため、AMIに焼き込むのではなく、実行時にシークレットを参照します。コンテナ化されたワークロードやサーバーレスワークロードの場合、Secrets Managerの参照をバックエンドとする環境変数を介してシークレットを注入するか、ECS/TaskDefinitionのsecretsを介してマウントします。短いTTLの接続プールとリトライを使用することで、最小限のダウンタイムでローテーションを行います。

構成管理と不変インフラストラクチャ

AWS OpsWorksは、特定の思想に基づいた構成管理を提供します。OpsWorks Stacksは、Chefのクックブックとライフサイクルイベント(Setup, Configure, Deploy, Undeploy, Shutdown)を使用して、アプリケーションの構成とデプロイをオーケストレーションし、ヘルスチェックによるインスタンスの停止/起動または置換を行う自動修復をサポートします。以前は、OpsWorksはマネージド型のChef AutomateやPuppet Enterpriseも提供していましたが、今日では多くのチームが、エージェントベースのオーケストレーションにはSystems Managerを標準として採用するか、Ansible/Chef/Puppetのコントロールプレーンを自身で実行しています。AnsibleはOpsWorksとネイティブに統合されていません。代わりに、Systems Manager State Managerを使用してプレイブックを実行するか、AWX/Ansible Automation PlatformをSSM Session Manager接続とEC2動的インベントリと組み合わせて使用します。

AWS Systems Managerは、ハイブリッド構成のための最新のコントロールプレーンです。

不変インフラストラクチャは、ドリフトを排除し、ロールバックを高速化します。EC2 Image Builderは、以下の要素でイメージパイプラインをコード化します。

CISベンチマーク、エージェントのヘルス(SSM/CloudWatch)、アプリケーションのスモークチェックを検証するためのテストコンポーネントを追加します。イメージをバージョン管理し、セマンティックタグでラベル付けします。AMI IDをParameter Store(例: /app/frontend/ami)に発行し、Auto Scalingの起動テンプレートで参照します。ローリングまたはブルー/グリーン戦略でデプロイし、不変性を維持するためにインプレースパッチ適用の代わりにインスタンスを置換します。脆弱性スキャン(Amazon Inspector)の結果をパイプラインのプロモーションゲートにフィードします。イメージにシークレットを焼き込まず、起動時にInstance Metadata Service v2およびSSM/Secrets Managerの参照を介して取得します。

実践的な問題シナリオ

Capital Oneは、顧客向けプラットフォームのマルチアカウント、マルチリージョンでのデプロイを標準化する必要があり、同時に厳格なガバナンス、シークレット管理を徹底し、構成ドリフトを排除する必要があります。環境はAWS Organizations内の数百のアカウントにまたがり、データベースアクセスとOSのハードニングに関して厳しい統制が敷かれています。

  1. AWS CDKでインフラストラクチャをモデル化し、CloudFormationに合成する

undefined

undefined

を使用して、テンプレートと変更セットを生成・検証します。

  1. CloudFormation StackSetsを介してベースラインネットワークとガードレールのスタックを配布する
  1. スタックポリシーと変更セットで重要なリソースを保護する

undefined

の前に

undefined

と手動承認を必須とします。

  1. LambdaベースのカスタムリソースでIaCを拡張する

undefined

と、作成後にエンジンパラメータを適用する

undefined

を実装します。

  1. Secrets ManagerとParameter Storeでシークレットと設定を集中管理する
  1. Systems Manager State Managerを介して望ましい状態とコンプライアンスを強制する
  1. EC2 Image Builderで不変インフラストラクチャを採用する
  1. パイプラインのオーケストレーションとガバナンス

undefined

を実行し、変更セットを作成し、承認のために一時停止してから実行する、というマルチステージのパイプラインを実装します。リポジトリの変更時にStackSetの更新をトリガーするためにEventBridgeを使用します。毎晩ドリフト検出スキャンを追加し、差異が見つかった場合はOpsCenterアイテムを作成します。


CI · すべてのドメイン · モニタリング、ロギング、可観測性

これらの問題を練習する → · ExamRoll.ioで時間制限付き練習 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

試験に合格する →

Amazonを閲覧 →

Related guides

オールインワンアクセス

1つのサブスクリプション。すべての試験。

すべてのプランで、無制限の回答検索、模擬試験、AI解説、および完全なリソースライブラリが利用可能 — 20以上の言語に対応。

月額
24.87
Just €0.83/day
すべて含まれています:
  • 無制限の回答検索
  • 無制限の模擬試験
  • AIを活用した解説
  • 完全なリソースライブラリ
  • 20以上の言語
  • 毎週のコンテンツ更新
  • 特典 & 紹介
  • 優先サポート
無料トライアルを開始

クレジットカード不要*

ベストバリュー
12ヶ月
179.87
Just €0.49/daySave 40%
すべて含まれています:
  • 無制限の回答検索
  • 無制限の模擬試験
  • AIを活用した解説
  • 完全なリソースライブラリ
  • 20以上の言語
  • 毎週のコンテンツ更新
  • 特典 & 紹介
  • 優先サポート
無料トライアルを開始

クレジットカード不要*

✓ 無料プランが含まれています · ✓ いつでもキャンセル可能 · ✓ すべてのプランで製品の全機能が利用可能