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

機械学習エンジニア–アソシエイト

AWS CodeDeploy の概要と試験出題ポイントは?

AWSサービスの一つであるAWS CodeDeployはどんな内容なのでしょうか?また、AWS認定資格の機械学習エンジニア-アソシエイト(MLA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

AWS CodeDeploy 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

AWS CodeDeployは、EC2インスタンス・オンプレミスサーバー・Lambda関数・ECSサービスへのアプリケーションデプロイを自動化するフルマネージドのデプロイサービスです。ダウンタイムを最小化したデプロイ戦略(Blue/Greenデプロイ等)を一元管理できます。

2. 主な特徴と機能

2.1 デプロイ対象(Compute Platform)

  • EC2/オンプレミス: EC2インスタンスまたはオンプレミスサーバー上のアプリケーション。CodeDeployエージェントのインストールが必要。
  • AWS Lambda: Lambda関数の新バージョンへのトラフィックシフト(カナリア/リニア/All-at-Onceデプロイ)。
  • Amazon ECS: ECSサービスのBlue/Greenデプロイ(ALBのターゲットグループ切り替え)。

2.2 デプロイタイプ

  • In-Place(ローリング): 既存インスタンス上でアプリケーションを更新。ダウンタイムが発生する可能性あり(EC2/オンプレのみ)。
  • Blue/Green: 新しいインスタンス/コンテナ(Green)を起動→トラフィックを切り替え→旧環境(Blue)を削除。ダウンタイムなし・ロールバックが容易。

2.3 デプロイ設定(デプロイ速度)

  • CodeDeployDefault.AllAtOnce: すべてのインスタンスに一括デプロイ(高速だが全台同時障害リスク)。
  • CodeDeployDefault.HalfAtATime: 半数ずつデプロイ。
  • CodeDeployDefault.OneAtATime: 1台ずつデプロイ(最も安全・最も遅い)。
  • カスタム設定: 最小健全ホスト数をパーセントまたは絶対数で指定。

2.4 appspec.yml

デプロイ手順を定義するYAMLファイル(リポジトリルートに配置)。

  • files/resources: デプロイするファイルの配置先を指定(EC2/オンプレ)。
  • hooks: デプロイの各フェーズで実行するスクリプトを定義。

2.5 ライフサイクルフック(EC2/オンプレ)

  • ApplicationStop → DownloadBundle → BeforeInstall → Install → AfterInstall → ApplicationStart → ValidateService
  • 各フックでシェルスクリプト/バッチファイルを実行(依存パッケージのインストール・サービス再起動・スモークテスト等)。

2.6 自動ロールバック

デプロイ失敗時またはCloudWatchアラームのしきい値超過時に自動的に前バージョンにロールバック可能。

3. アーキテクチャおよび技術要素

  1. CodePipelineのDeployステージからCodeDeployをトリガー(または直接API/コンソールから実行)。
  2. CodeDeployがアーティファクト(S3/GitHub)からデプロイパッケージを取得。
  3. EC2エージェントがdeployment手順(appspec.yml)に従ってデプロイを実行。
  4. ヘルスチェック/ValidateServiceフック通過後にデプロイ成功。失敗時は自動ロールバック。

4. セキュリティと認証・認可

  • EC2 IAMインスタンスプロファイル: EC2インスタンスのCodeDeployエージェントがS3からデプロイパッケージを取得するためのIAMロール。
  • CodeDeployサービスロール: CodeDeployがEC2/ECS/Lambda等を操作するためのIAMロール。
  • デプロイグループのタグ: EC2タグまたはASGでデプロイ対象インスタンスを絞り込み。

5. 料金形態

  • EC2/オンプレへのデプロイ: 無料。
  • Lambda/ECSへのデプロイ: 無料。
  • CodeDeployサービス自体の利用は追加料金なし(使用するEC2・Lambda・ECS等のコストは別途)。

6. よくあるアーキテクチャ・設計パターン

  • EC2 Blue/Greenデプロイ: Auto Scaling Group(Green)を新規作成→ ALBのターゲットグループを切り替え→ Blue環境を終了。ダウンタイムゼロのデプロイを実現。
  • Lambda カナリアデプロイ: Lambdaの新バージョンに10%のトラフィックを流し(カナリア)→ 問題なければ100%に切り替え。問題があれば自動ロールバック。
  • ECS Blue/Green(ALB切り替え): 新タスク定義のコンテナ(Green)をALBの別ターゲットグループで起動→ リスナールールを切り替え→ Blueタスクを停止。

7. 設定・デプロイ手順(ハンズオン例)

  1. EC2インスタンスにCodeDeployエージェントをインストール(SSMで自動化可能)。
  2. アプリケーションにappspec.ymlを追加(インストール先・フックスクリプトを定義)。
  3. CodeDeployコンソール→「アプリケーションを作成」→「デプロイグループ」を作成(EC2タグ/ASG・デプロイ設定を指定)。
  4. 「デプロイを作成」→ S3またはGitHubからアーティファクトを指定して実行。
  5. デプロイ結果(成功/失敗・各フックの実行ログ)をコンソールで確認。

8. 試験で問われやすいポイント

8.1 デプロイタイプ

  • Q: ダウンタイムなしでEC2アプリケーションをデプロイするCodeDeployの方法は?
    A: Blue/Greenデプロイ(Green環境を新規起動→ALBでトラフィック切り替え→Blue環境を削除)。In-Placeはダウンタイムが発生する可能性あり。

8.2 appspec.yml

  • Q: CodeDeployのデプロイ手順・フックスクリプトを定義するファイルは?
    A: appspec.yml(リポジトリルートに配置)。files(ファイル配置先)・hooks(各フェーズのスクリプト)を定義。

8.3 Lambda/ECSデプロイ

  • Q: CodeDeployでLambdaのカナリアデプロイを実現するには?
    A: Lambda Compute PlatformでCodeDeployデプロイグループを作成→ デプロイ設定でCanary10Percent10Minutes等を指定→ 新バージョンに段階的にトラフィックをシフト。

8.4 自動ロールバック

  • Q: CodeDeployでデプロイ失敗時に自動ロールバックするには?
    A: デプロイグループの設定で「デプロイ失敗時のロールバック」または「CloudWatchアラームのしきい値超過時のロールバック」を有効化。

8.5 エージェント

  • Q: CodeDeployでEC2/オンプレにデプロイする際の前提条件は?
    A: デプロイ対象のEC2インスタンス/オンプレサーバーにCodeDeployエージェントがインストールされていること。