CodeDeploy

【VPC外リージョンサービス】

CodeDeploy は、アプリケーションを自動的にデプロイするフルマネージドサービスです。

Application(アプリケーション) ごとにデプロイ対象をまとめ、Deployment Group(デプロイグループ) として管理します。各デプロイは Deployment Configuration(デプロイ設定) に基づいて実行され、デプロイ方法や並行実行数、ヘルスチェック条件を定義できます。

CodeDeployは、EC2(Elastic Compute Cloud)、オンプレミスサーバー、Auto Scaling グループ、ECS DeploymentLambda 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デプロイメントログ
エージェントログ
CloudWatch Logs優先の原則
標準メトリクス
メトリクス名説明
DeploymentFailedデプロイ失敗数
DeploymentSucceededデプロイ成功数
InstanceFailedインスタンス失敗数
InstanceSucceededインスタンス成功数

制限値(固定値/ハードリミット/ソフトリミット)

固定値制限値
インスタンス数/デプロイグループ無制限

ソフトリミット制限値
アプリケーション数/リージョン100
デプロイグループ数/アプリケーション100
デプロイ設定数/リージョン100
同時デプロイ数1,000

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
EC2/オンプレミスEC2/オンプレミスへのデプロイは無料
Lambda/ECSLambda/ECSへのデプロイは無料

公式ページ

AWSドキュメント CodeDeploy