変更要約: in-scope サービス網羅: App Runner, App2Container, AWS Copilot, Serverless Application Repository, CloudShell, AWS CLI/SDK, CodeStar を s3 に追記
1.3自動テストとアーティファクト管理
パイプラインの品質ゲート——自動テスト、手動承認アクション、アーティファクト(CodeArtifact/ECR)、CodeGuru——を理解します。不良な変更をデプロイ前に止めます。
パイプラインに品質ゲートを組み込み、テストや承認を通った変更だけを先へ進めます。成果物(アーティファクト)はバージョン管理して再利用します。
1.3.1品質ゲートとアーティファクト
- 自動テスト:Build/Test ステージで実行し、失敗ならパイプラインを停止して不良なデプロイを防ぐ。
- 手動承認アクション:本番デプロイ前に人手のゲートを挟む。
- アーティファクト:コンテナイメージ=ECR、ライブラリ/パッケージ=CodeArtifact にバージョン管理。
- CodeGuru:コードレビュー(Reviewer)とパフォーマンスプロファイリング(Profiler)で品質を補助。
「テスト失敗でパイプライン停止」「本番前の人手ゲート=手動承認アクション」「コンテナイメージ=ECR」「言語パッケージ=CodeArtifact」「自動コードレビュー=CodeGuru」 は DOP-C02 で頻出です。品質ゲートを早い段階(シフトレフト)に置くほど、欠陥の修正コストが下がります。
品質ゲートは「どの段階で・何を検証し・どう記録するか」を設計します。CodeBuild のテストレポート機能は JUnit/TestNG などの結果を取り込み、合格率や傾向をコンソールで可視化できます。テストはユニット→統合→E2Eと段階を上げ、早い段階(シフトレフト)ほど安価に欠陥を捕まえます。手動承認アクションは SNS と連携して承認依頼を通知し、誰がいつ承認したかを記録します。アーティファクトの取り違えは試験頻出で、コンテナイメージ=Amazon ECR(イメージスキャン・ライフサイクルポリシー・タグのイミュータブル化が可能)、言語パッケージ=CodeArtifact、ビルド成果物(zip 等)=S3 と明確に分かれます。ECR のイメージスキャン(Basic/Enhanced)は脆弱性検出をパイプラインに組み込め、Enhanced は Amazon Inspector と連携します。CodeGuru Reviewer は機械学習でコードの欠陥やセキュリティ問題(ハードコードされた秘密情報など)を指摘し、CodeGuru Profiler は実行時の CPU/メモリのホットスポットを特定します。これらを組み合わせ、パイプラインの各ステージで「通らなければ進めない」ゲートを敷くのが DevOps の品質保証の要です。
| 保管するもの | 保管先 | 補足 |
|---|---|---|
| コンテナイメージ | Amazon ECR | イメージスキャン・ライフサイクル・イミュータブルタグ |
| 言語パッケージ(npm/pip/Maven) | CodeArtifact | アップストリームで公開リポジトリをプロキシ |
| ビルド成果物(zip 等) | Amazon S3 | CodePipeline のアーティファクトストア |
| コード品質の指摘 | CodeGuru | Reviewer=レビュー / Profiler=実行時最適化 |
シナリオ:コンテナ化したアプリで、脆弱なイメージを本番に出さない仕組みを CI/CD に組み込みたい。→ ビルドした イメージを ECR にプッシュし、ECR イメージスキャン(Enhanced=Amazon Inspector 連携)で脆弱性を検出。重大度が高ければパイプラインのステージで失敗させ、手動承認アクションの前で止めます。さらに CodeGuru Reviewer をソースに掛けてハードコードされた秘密情報を検出し、Secrets Manager 参照へ修正させます。
FAQ:手動承認アクションと自動テストはどちらを使う? 両方を併用します。自動テストは機械的に判定できる品質(ユニット/統合/脆弱性スキャン)を高速に何度でも検証し、手動承認は人の判断が要るゲート(本番リリース可否、変更管理の最終確認)に使います。承認依頼は SNS 通知で関係者へ届けます。
ひっかけ:CodeGuru Reviewer(コードレビュー)と CodeGuru Profiler(実行時プロファイリング)を混同しないこと。「本番で CPU を食っている箇所を特定」は Profiler、「プルリク時にコードの欠陥/秘密情報を指摘」は Reviewer です。また脆弱なコンテナ検出は ECR イメージスキャン/Inspector であって CodeGuru ではありません。
1.3.2SDLC を補完するサービス
AWS CI/CD のコアサービス(CodePipeline/CodeBuild/CodeDeploy)に加え、コンテナのデプロイ自動化・SDLC の周辺操作・ツールチェーンの初期構築を担うサービスが in-scope として問われます。
1.3.2.1コンテナデプロイの自動化
App Runner はソースコードリポジトリまたはコンテナイメージから Web サービス・API を自動ビルド・デプロイ・スケールするフルマネージドサービスです。ロードバランサー・オートスケール・TLS 証明書のプロビジョニングをすべて AWS が担うため、ECS/Fargate より運用負荷が大幅に低くなります。DevOps 文脈では「インフラ管理コストを最小化して Web コンテナを公開したい」場面が選定基準で、細粒度のネットワーク制御や既存 ECS 基盤との統合が必要な場合は ECS が適切です。
App2Container(A2C)は既存の Java/.NET アプリケーションをサーバー上で分析し、Dockerfile・ECS/EKS 向けタスク定義・CloudFormation テンプレート・CI/CD パイプライン雛形を自動生成するツールです。DevOps 文脈での役割はレガシーアプリのモダナイズ自動化で、手作業でコンテナ化するコストと誤りを削減します。既存アプリをコンテナに移行するフェーズで選択します。
AWS Copilot はコンテナ化アプリを ECS・Fargate・App Runner に構築・デプロイ・運用するための CLI です。サービス種別(Load Balanced Web Service・Backend Service 等)と環境(test/prod 等)を宣言すると、裏側で CloudFormation スタック・パイプライン・VPC・ロギング設定を自動生成します。DevOps 文脈では「宣言的かつ少ない手順でコンテナ環境を立ち上げ・CI/CD まで整えたい」ときに使います。なお GitHub Copilot とは無関係です。
1.3.2.2SDLC 支援・再利用ツール
Serverless Application Repository(SAR)は SAM テンプレートで定義済みのサーバーレスアプリケーションを検索・デプロイ・公開できる AWS 管理のリポジトリです。再利用可能なサーバーレスコンポーネント(認証フロー・画像変換・通知ハンドラ等)をほぼワンクリックで展開でき、自社の共通部品を組織内で共有するユースケースでも利用します。
CloudShell は AWS マネジメントコンソール内でブラウザから利用できる認証済みシェル環境です。AWS CLI・各種ランタイム(Python/Node.js 等)・パーミッションが事前構成されており、1 GiB の永続ストレージを持ちます。DevOps 文脈では「ローカルに認証情報を置かずに運用コマンドやスクリプトをすぐ実行したい」「トラブルシューティングを即座に始めたい」場面で使います。
AWS CLI はコマンドラインから AWS サービスを操作するツールで、シェルスクリプト・CI パイプライン・自動化スクリプトに組み込んで利用します。AWS SDK(例: Python 向け boto3)は各言語から AWS API を呼び出す公式ライブラリで、認証解決・自動リトライ・ページネーション処理を標準提供します。どちらも SDLC 自動化スクリプトの基盤として不可欠で、パイプラインのカスタムステップや Lambda ハンドラーで広く使われます。
※AWS CodeStar は 2024 年 7 月 31 日に提供終了・廃止され、新規プロジェクトの作成はできません(以下は概念理解のための説明)。 CodeStar はプロジェクトテンプレートと統合ダッシュボードによって CodeCommit・CodeBuild・CodeDeploy・CodePipeline を一括起動し、CI/CD ツールチェーンの初期設定を定型化するサービスでした。チームメンバーのアクセス管理や Issue トラッキング連携も提供しました。現在、新規にツールチェーンを素早く立ち上げるには CodePipeline・CodeBuild・CodeConnections や CodeCatalyst を直接構成します。
| サービス | DevOps での役割 | いつ選ぶか |
|---|---|---|
| ==App Runner== | Web/API コンテナを最小運用で公開 | LB/スケール/TLS を管理したくない |
| ==App2Container== | レガシー Java/.NET をコンテナ化 | 既存アプリのモダナイズ自動化 |
| ==AWS Copilot== | ECS/Fargate/App Runner の環境+CI/CD を宣言的構築 | コンテナ環境のセットアップを簡素化 |
| ==Serverless Application Repository== | SAM アプリの検索・展開・共有 | 再利用可能なサーバーレス部品の配布 |
| ==CloudShell== | 認証済みブラウザシェルで即時実行 | ローカル認証不要の運用コマンド |
| ==AWS CLI== / ==AWS SDK== | CLI/スクリプト/Lambda から AWS を自動化 | パイプラインのカスタムステップ・自動化全般 |
| ==CodeStar== | CI/CD ツールチェーンの初期構築を定型化 | 新プロジェクトを素早く立ち上げる |
「コンテナ Web を最小運用で公開=App Runner」「レガシー Java/.NET のコンテナ化自動化=App2Container」「ECS/Fargate のセットアップ CLI=AWS Copilot」「SAM アプリのカタログ=Serverless Application Repository」「認証済みブラウザシェル=CloudShell」「CLI で AWS 自動化=AWS CLI」「ツールチェーン一括起動=CodeStar」 は DOP-C02 の in-scope サービスです。それぞれの主用途を混同しないよう整理してください。
1.3.3この節のまとめ
- 品質ゲート=自動テスト+手動承認アクション
- 成果物=ECR(イメージ)/CodeArtifact(パッケージ)
- SDLC周辺=App Runner/App2Container/Copilot/SAR/CloudShell/CLI&SDK/CodeStar
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. パイプラインで自動テストが失敗したとき、不良なコードが本番に進まないようにしたい。どうしますか?
Q2. コンテナイメージをバージョン管理して保存し、ECS/EKS のデプロイで参照させたい。何を使いますか?
Q3. 本番デプロイの前に、人による最終確認のゲートをパイプラインに入れたい。何を使いますか?

