mcpField
A
aws-deployment

aws-deployment

github.com/awsクラウド・DevOps3.3k5.9k 回インストール1 日前に更新
リポジトリ

aws-deployment について

AWS の CI/CD デプロイを行う開発者向けのスキルです。CodePipeline、CodeBuild、CodeDeploy などの設定とトラブルシューティングを案内し、一般的なデプロイ手順、クロスアカウント要件、セキュリティ上の注意点を扱います。

主な機能

  1. 01CodePipeline の設定案内
  2. 02CodeConnections のソース設定
  3. 03CodeBuild のビルド設定
  4. 04CodeDeploy のデプロイ戦略
  5. 05クロスアカウントデプロイと診断

活用シーン

  1. 01GitHub から ECS へのパイプライン作成
  2. 02停止したパイプラインやビルドの診断
  3. 03クロスアカウントデプロイ権限の設定
  4. 04Lambda のカナリアデプロイ設定

MCP 対応

AWS MCP server で CLI コマンドを実行し、設定を検証する際に利用できます。標準の AWS CLI にも対応したガイダンスです。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aws/agent-toolkit-for-aws --skill aws-deployment

インストール後、Claude Code で/aws-deploymentを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
codeartifact.md
codebuild.md
codeconnections.md
codedeploy.md
codepipeline.md
troubleshooting.md

詳細

AWS デプロイ(CI/CD)

CLI コマンドの実行や設定の直接検証には、AWS MCP サーバーの使用が最適です。 すべてのガイダンスは標準の AWS CLI でも利用できます。

重大な警告

CodeConnections の PENDING トラップ:CLI/CloudFormation で作成した接続は、PENDING のまま無期限にとどまります。AWS コンソールで必ず OAuth を完了してください。API のみで完了する方法はありません。

クロスアカウントの 3 つの必須要件:クロスアカウントデプロイには、次の 3 つすべてが必要です:(1)対象アカウントへのアクセスを許可する KMS キーポリシー(エイリアスではなくキー ID を使用)、(2)対象アカウント用の S3 バケットポリシー、(3)信頼ポリシーを設定したクロスアカウント IAM ロール。いずれかが欠けると、原因が分かりにくい Access Denied が発生します。

CodeDeploy の ApplicationStop は PREVIOUS リビジョンを使用:以前のデプロイに含まれる停止スクリプトに問題があると、以降のすべてのデプロイがブロックされます。停止スクリプトは冪等にし、サービスが存在しない場合は 0 で終了するようにしてください。--ignore-application-stop-failures を指定するとブロックを解除できます。

NAT なしの VPC 内 CodeBuild:NAT ゲートウェイのない VPC サブネットでビルドを実行すると、DOWNLOAD_SOURCE で何の通知もなく停止します。プライベートサブネットには必ず NAT ゲートウェイまたは VPC エンドポイントを設定してください。

CodeConnections の IAM:API 呼び出しと IAM ポリシーの Actions には codeconnections: プレフィックスを使用してください。リソース ARN は完全一致する必要があります。新しいリソースには codeconnections プレフィックスが使われ、既存のリソースには codestar-connections プレフィックスが使われている場合があります。作成時期の異なるリソースが混在している場合は、Resource に両方を指定してください。

UseConnection の権限範囲は広すぎます:codeconnections:UseConnection を許可すると、その接続がアクセス可能なすべてのリポジトリへのアクセスが許可されます。CodeBuild が必要なリポジトリだけにアクセスできるよう、条件キー(codeconnections:FullRepositoryId、codeconnections:ProviderAction、codeconnections:BranchName)を必ず指定してください。

各サービスの連携方法

CodeConnections → CodeBuild → CodeDeploy を CodePipeline がオーケストレーションします。

レイヤーサービス役割
ソースCodeConnectionsGitHub/GitLab/Bitbucket に認証し、コードを配信します
パッケージCodeArtifactプライベートパッケージレジストリとして機能し、パブリックレジストリからの依存関係をキャッシュします
ビルド/テストCodeBuild成果物をコンパイル、テスト、パッケージ化します
デプロイCodeDeployトラフィックの切り替え戦略を使って EC2/ECS/Lambda にデプロイします
オーケストレーターCodePipelineステージを連結し、遷移や承認ゲートを管理します

デフォルトは、キュー実行モードの V2 パイプラインタイプです。実行が完全に独立している場合に限り、PARALLEL を使用してください。

クイックナビゲーション

やりたいこと移動先
パイプラインの作成(V2、トリガー、変数、モード)codepipeline.md
GitHub/GitLab/Bitbucket のソースへの接続codeconnections.md
buildspec.yml の作成/ビルドの設定codebuild.md
ビルド用プライベートパッケージレジストリのセットアップcodeartifact.md
デプロイ戦略(ブルー/グリーン、カナリア)の設定codedeploy.md
クロスアカウントまたはクロスリージョンのデプロイcodepipeline.md
失敗するパイプライン、ビルド、デプロイの修正troubleshooting.md

一般的なワークフロー

タスク操作参照
GitHub から ECS へのパイプライン接続を作成 → CodeBuild の Docker ステージ → CodeDeploy の ECS blue/greencodepipeline, codedeploy
パイプラインがソースで停止する接続ステータスを確認します。PENDING の場合は、AWS Console で OAuth を完了しますtroubleshooting
ビルドがタイムアウトするVPC/NAT を確認し、timeoutInMinutes を増やし、Docker の特権モードを確認しますcodebuild
別のアカウントにデプロイするKMS + S3 バケットポリシー + クロスアカウントロールを設定し、アクションに RoleArn を追加しますcodepipeline
失敗したデプロイをロールバックするアラームまたは失敗時に自動ロールバックします。手動の場合:stop-deployment --auto-rollback-enabledcodedeploy
Lambda のカナリアデプロイCodeBuild でパッケージを作成 → CodeDeploy Lambda でカナリア方式のトラフィックシフトを実行しますcodedeploy

トラブルシューティング

エラー/症状原因対処方法
CodeBuild の YAML_FILE_ERRORbuildspec の runtime-versions がない、または形式が不正です(標準イメージでは設定を推奨)install フェーズに runtime-versions ブロックを追加します
CodeDeploy で file already exists上書き設定なしで再デプロイしていますfile_exists_behavior: OVERWRITE を設定します
パイプラインのトリガーが実行されないファイルパスフィルターが差分内の最初の 100 ファイルのみをチェックしますパスフィルターの範囲を狭めるか、より小さな単位でマージします
PARALLEL モードで誤ったリビジョンが使用されるイベントとソースアクションの間で競合が発生しています順次実行の一貫性を確保するため、QUEUED モードを使用します
Docker:Cannot connect to daemon特権モードがありませんprivilegedMode: true を設定し、buildspec で dockerd を起動します
CODEBUILD_CLONE_REF の権限エラーCodeBuild ロールに UseConnection がありませんCodeBuild サービスロールに codeconnections:UseConnection を追加します
デプロイが完了しないMinimumHealthyHosts がインスタンス数に対して高すぎますヘルスしきい値がインスタンスの総数を下回るようにします
ECS のデプロイが停止する新しいタスクセットのヘルスチェックに失敗していますターゲットグループのヘルスチェックパス/ポートを確認します

セキュリティ

  • シークレットは必ず Secrets Manager または Parameter Store に保存し、CodeBuild の type: SECRETS_MANAGER で参照してください。buildspec に PLAINTEXT として埋め込んではいけません
  • クロスアカウントのアーティファクト暗号化には、必ずカスタマー管理の KMS キーを使用してください(デフォルトの暗号化はクロスアカウントをサポートしていません)
  • CodeBuild/CodeDeploy のサービスロールは、特定のリソース ARN にスコープを絞ることを推奨します。s3:GetObject または kms:Decrypt に * を使用してはいけません
  • ソース接続には、必ず個人用アクセストークンではなく CodeConnections を使用してください。OAuth トークンは自動的にローテーションできません
  • 包括的なガイダンスについては、CodePipeline のセキュリティに関するベストプラクティスを参照してください

対象外

トピック代わりに使用
CDK Pipelines (aws-cdk-lib/pipelines)aws-cdk
sam deploy/SAM CLIaws-serverless
ECS サービスのデプロイ設定(サーキットブレーカー、ローリングパラメーター)aws-containers
GitHub Actions/GitLab CI対象外のサードパーティーツール

コメント