
【VPC外リージョンサービス】
CodeDeploy は、アプリケーションを自動的にデプロイするフルマネージドサービスです。
Application(アプリケーション) ごとにデプロイ対象をまとめ、Deployment Group(デプロイグループ) として管理します。各デプロイは Deployment Configuration(デプロイ設定) に基づいて実行され、デプロイ方法や並行実行数、ヘルスチェック条件を定義できます。
CodeDeployは、EC2(Elastic Compute Cloud)、オンプレミスサーバー、Auto Scaling グループ、ECS Deployment、 Lambda Deployment に対応しており、停止時間を最小限に抑えつつ、確実なデプロイを実現します。アプリケーションの変更内容は Revision(リビジョン) として S3(Simple Storage Service) や CodeCommit などから取得し、ECR(Elastic Container Registry) のコンテナイメージも利用可能です。
デプロイ手順は AppSpec(アプリケーション仕様書) に定義し、appspec.yml ファイルを通じて BeforeInstall、AfterInstall、ValidateService などのフックを柔軟に設定できます。これにより、デプロイ前後のスクリプト実行や設定変更を自動化できます。
デプロイ方式としては、既存環境を直接更新する In-place Deployment(インプレースデプロイ)、段階的に更新を進める Rolling Deployment(ローリングデプロイ)、新旧環境を切り替える Blue/Green Deployment(ブルーグリーンデプロイ)、一部環境で試験的に実行する Canary Deployment(カナリアデプロイ) に対応しています。これらの方式は トラフィックシフト を組み合わせて段階的にリリースでき、サービス停止リスクを大幅に軽減します。
また、CloudWatch Alarms による異常検知と 自動ロールバック 機能によって、デプロイ失敗時には迅速に以前の安定版へ戻すことができます。さらに、ヘルスチェック により、アプリケーションの稼働状態を継続的に確認します。
IAM で最小権限のアクセス制御を行い、Secrets Manager を利用して安全に認証情報を管理できます。CodePipeline と統合することで、CodeBuild によるビルド、CodeCommit や S3 からのソース取得、ECS や Lambda へのデプロイまでを自動化した継続的デリバリーパイプラインを構築できます。
重要用語
ユースケース
| EC2へのアプリケーション自動デプロイ | 新しいアプリケーションバージョンをEC2インスタンス群に対して、ローリングアップデートやブルー/グリーン方式で安全にデプロイする。 |
| オンプレミスサーバーへのデプロイ | オンプレミスのサーバーにもエージェントを入れ、クラウドと同じ仕組みでアプリケーションの更新を自動配布する。 |
| Lambda関数の段階的リリース | Lambdaの新バージョンをトラフィックの一部にだけ流すカナリアリリースを行い、問題があればすぐにロールバックできるようにする。 |
ベストプラクティス
| デプロイ戦略の選択 | Blue/Greenやローリングなどアプリ特性に合ったデプロイタイプを選ぶ。 |
| ヘルスチェックとロールバック | 失敗時に自動ロールバックされるようにヘルスチェックを設定する。 |
| ライフサイクルフックの活用 | Before/Afterフックで事前・事後処理を自動化する。 |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| KMS(データの暗号化と鍵の安全管理) | - |
| Secrets Manager(機密情報の安全管理) | シークレット(秘密情報)の作成が推奨 Git認証情報・APIキー・環境設定パスワード |
| SSM Parameter Store(設定情報の一元管理) | - |
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 デプロイ設定変更履歴・ロール/トラフィック制御の準拠評価 |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 デプロイ設定変更のAPI異常検知- |
ログ・監視
| ログ出力先 | ログの種類 |
|---|---|
| CloudWatch Logs | デプロイメントログ エージェントログ |
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| DeploymentFailed | デプロイ失敗数 |
| DeploymentSucceeded | デプロイ成功数 |
| InstanceFailed | インスタンス失敗数 |
| InstanceSucceeded | インスタンス成功数 |
制限値(固定値/ハードリミット/ソフトリミット)
| 固定値 | 制限値 |
|---|---|
| インスタンス数/デプロイグループ | 無制限 |
| ソフトリミット | 制限値 |
|---|---|
| アプリケーション数/リージョン | 100 |
| デプロイグループ数/アプリケーション | 100 |
| デプロイ設定数/リージョン | 100 |
| 同時デプロイ数 | 1,000 |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| EC2/オンプレミス | EC2/オンプレミスへのデプロイは無料 |
| Lambda/ECS | Lambda/ECSへのデプロイは無料 |