AWS認定資格 WEB問題集&徹底解説
機械学習エンジニア–アソシエイト
AWS CodeDeploy の概要と試験出題ポイントは?
AWSサービスの一つであるAWS CodeDeployはどんな内容なのでしょうか?また、AWS認定資格の機械学習エンジニア-アソシエイト(MLA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
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. アーキテクチャおよび技術要素
- CodePipelineのDeployステージからCodeDeployをトリガー(または直接API/コンソールから実行)。
- CodeDeployがアーティファクト(S3/GitHub)からデプロイパッケージを取得。
- EC2エージェントがdeployment手順(appspec.yml)に従ってデプロイを実行。
- ヘルスチェック/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. 設定・デプロイ手順(ハンズオン例)
- EC2インスタンスにCodeDeployエージェントをインストール(SSMで自動化可能)。
- アプリケーションにappspec.ymlを追加(インストール先・フックスクリプトを定義)。
- CodeDeployコンソール→「アプリケーションを作成」→「デプロイグループ」を作成(EC2タグ/ASG・デプロイ設定を指定)。
- 「デプロイを作成」→ S3またはGitHubからアーティファクトを指定して実行。
- デプロイ結果(成功/失敗・各フックの実行ログ)をコンソールで確認。
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エージェントがインストールされていること。
広告