AWS認定資格 WEB問題集&徹底解説DevOpsエンジニア プロフェッショナル(DOP)

AWS Copilot の概要と試験出題ポイントは?

AWSサービスの一つであるAWS Copilotはどんな内容なのでしょうか?また、AWS認定資格のDevOpsエンジニア-プロフェッショナル(DOP)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

AWS Copilot 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

AWS Copilot(AWS Copilot CLI)は、コンテナアプリケーションをAmazon ECS on AWS FargateやAWS App Runnerへ構築・リリース・運用するための、開発者向けのオープンソースのコマンドラインツールです。 Dockerfileとアプリの種類を指定すると、VPC、ECSクラスター、ロードバランサー、ECRリポジトリ、CI/CDパイプラインまでをAWS CloudFormationのスタックとして自動生成します。

重要: AWS Copilot CLIは2026年6月12日にサポートを終了しました(2026年3月6日に告知)。以降はAWSによる新機能の追加、セキュリティ更新、テクニカルサポートが提供されず、GitHubのリポジトリも読み取り専用になっています。 これから新しく構築する場合は、Copilotではなく次の移行先を選びます。

  • Amazon ECS Express Mode: コンテナイメージと2つのIAMロールを渡すだけで、HTTPS付きのロードバランサーやAuto Scalingを備えたFargateのサービスを作れる。標準的なWebアプリやAPIを最短で本番化したい場合の第一候補。
  • AWS CDKのL3コンストラクト: ApplicationLoadBalancedFargateService、QueueProcessingFargateService、ScheduledFargateTask、CDK Pipelinesなど。細かな制御や複数サービス構成、CI/CDまでコードで管理したい場合に選ぶ。
  • 生成済みCloudFormationの引き継ぎ: Copilotが作ったスタックを自分たちで管理し続ける方法もある。

2. 主な特徴と機能

2.1 4つの基本概念

Copilotは、関連するサービス群をまとめたApplication、test/prodなどの独立したデプロイ先であるEnvironment、実際に動くコードとその実行基盤であるService(イベントで起動して終了する処理はJob)、Gitへのpushを起点にリリースするPipelineという概念で構成を整理します。

2.2 用途別のサービスタイプ

  • Load Balanced Web Service: インターネット向けのALB(またはNLB)の背後で動くFargateのECSサービス。
  • Backend Service: 外部公開せず、内部ロードバランサー等で他サービスから呼ばれるFargateのサービス。
  • Worker Service: SNSトピックに購読したSQSキューをポーリングして非同期処理するサービス(デッドレターキュー付き)。
  • Request-Driven Web Service: AWS App Runner上で動き、リクエスト量で自動スケールするWebサービス。
  • Static Site: S3バケットとCloudFrontで配信する静的サイト。
  • Scheduled Job: スケジュールで起動し、処理後に終了するECSタスク。

2.3 マニフェストによる宣言的な設定

各Service/Environment/Pipelineの設定はYAMLのマニフェストに書きます。CPU・メモリ、タスク数とAuto Scalingの範囲、ヘルスチェック、シークレット、配置するサブネットなどを指定し、environmentsセクションでEnvironmentごとの差分(本番だけタスク数を増やす等)を上書きできます。 マニフェストはデプロイ時にCloudFormationテンプレートへ変換されます。

2.4 運用支援

copilot svc logsによるログ参照、copilot svc statusによる状態確認、ECS Execを使ったcopilot svc execでのコンテナ内コマンド実行、copilot storage initによるS3/DynamoDB/Aurora Serverlessの追加などをコマンドで行えます。

3. アーキテクチャおよび技術要素

  1. copilot app initでApplicationを作成する。アプリケーションの構成情報はアカウント内のSSM Parameter Storeに保存される。
  2. copilot env init/copilot env deployでEnvironmentを作る。既定で2AZのVPC、ECSクラスター、セキュリティグループ、プライベートDNS名前空間が作られ、ALBはEnvironment内で共有される。既存VPCの利用も可能。
  3. copilot svc init/copilot svc deployでServiceを作る。ローカルでDockerイメージをビルドしてECRへpushし、マニフェストから生成したCloudFormationスタックでECSサービスやApp Runnerサービスを展開する。
  4. copilot pipeline init/copilot pipeline deployで、AWS CodePipelineとAWS CodeBuildによるリリースパイプラインを作る。ソースはGitHub、Bitbucket、CodeCommitに対応する。

Environmentは別アカウント・別リージョンにも作成でき、Applicationのアカウントから一元管理します。マニフェストはリポジトリ内のcopilot/ディレクトリでコードと一緒に管理されます。 最終的な実体はすべて通常のCloudFormationスタックとAWSリソースなので、Copilotを使わなくなってもリソースそのものは残ります。

4. セキュリティと認証・認可

  • 実行時の権限: ECSタスクにはタスクロールとタスク実行ロールが割り当てられる。追加のAWSリソースへのアクセスは、addonsで定義したIAMマネージドポリシーをタスクロールへ付与して最小権限にする。
  • Environment管理用ロール: copilot env initはEnvironmentの更新・管理に使うIAMロールを作成する。app initでは作成するロールに権限境界(Permissions Boundary)を設定することもできる。
  • シークレット: パスワードやAPIキーはSSM Parameter StoreまたはAWS Secrets Managerに保管し、マニフェストのsecretsで参照して環境変数として安全に渡す。イメージやマニフェストへ平文で書かない。
  • サポート終了後のリスク: Copilot CLI自体のセキュリティ修正は提供されないため、Express ModeやCDKへの移行を優先する。

5. 料金形態

Copilot CLI自体はオープンソースのツールで、ツールの利用料はかかりません。課金されるのは、Copilotが作成したAWSリソースの利用料です。

  • コンピューティング: ECS on Fargateのタスク(vCPU・メモリ)、またはApp Runnerのサービス。
  • ネットワーク: ALB/NLB、NATゲートウェイ(プライベートサブネット構成の場合)、データ転送。
  • 周辺サービス: ECR、CloudWatch Logs、SQS/SNS、CodePipeline/CodeBuildなど。
  • コストの特徴: Environment内でALBを複数サービスで共有でき、ALBのコストを抑えられる。移行先のECS Express Modeも追加料金なしでALBを共有する。
  • 移行時の注意: 新しい環境での動作確認後、Copilot側のService/Environment/Applicationを削除しないと二重に課金される。

6. よくあるアーキテクチャ・設計パターン

  • Webフロント+内部API: Load Balanced Web Serviceから内部のBackend Serviceを呼び出す構成。
  • 非同期処理: Web ServiceがSNSへ発行し、Worker ServiceがSQS経由で処理する構成。移行先はCDKのQueueProcessingFargateService。
  • 定期バッチ: Scheduled Jobでコンテナを定時起動する構成。移行先はEventBridge SchedulerからのECS RunTask、またはCDKのScheduledFargateTask。
  • 環境の昇格: 同じイメージをtestで検証し、承認後にprodへ展開するパイプライン。移行先はCDK Pipelines。
  • 単一Web APIの移行: 細かな制御が不要なステートレスAPIは、ECS Express Modeへ載せ替えるのが最も手軽。

7. 設定・デプロイ手順(ハンズオン例)

既存のCopilot構成を理解・移行するための参考手順です(新規構築ではExpress ModeやCDKを使う)。

  1. Dockerfileのあるディレクトリでcopilot initを実行し、Application、Service、test Environmentを作成してデプロイする。
  2. copilot env init --name prodとcopilot env deploy --name prodで本番用Environmentを追加する。
  3. copilot/[サービス名]/manifest.ymlを編集し、copilot svc deploy --env prodで本番へ展開する。
  4. copilot pipeline initでpipelineマニフェストとbuildspecを生成し、ステージの順序、テストコマンド、手動承認を設定してcopilot pipeline deployする。
  5. (移行)copilot app ls、copilot svc ls、copilot svc show --jsonで既存の構成を棚卸しする。
  6. Webサービスはaws ecs create-express-gateway-serviceやECSコンソールでExpress Modeのサービスを作るか、CDKのL3コンストラクトで同等の構成をコード化する。
  7. 新環境の確認とDNS切り替え後、copilot svc delete/env delete/app deleteで旧リソースを削除する。

8. 試験で問われやすいポイント

8.1 サポート終了と後継サービス

  • Q: AWS Copilot CLIの現状は?
    A: 2026年6月12日にサポートを終了した。新機能、セキュリティ更新、テクニカルサポートは提供されない。
  • Q: Copilotの代わりに、コードもテンプレートも書かずにコンテナをHTTPS付きで公開したい場合は?
    A: Amazon ECS Express Modeを使う。イメージ、タスク実行ロール、インフラストラクチャロールを指定するだけでよい。
  • Q: 複数サービスやワーカー、パイプラインまでコードで細かく制御したい場合は?
    A: AWS CDKのL3コンストラクト(ApplicationLoadBalancedFargateService、QueueProcessingFargateService、CDK Pipelinesなど)を使う。
  • Q: 試験の選択肢にCopilotが出てきたら?
    A: DOP-C02は対象サービスに掲載、DVA-C02は対象リストから外れたがスキル例に「Copilot環境」が残る。概念は押さえつつ、新規構築の正解としては後継・代替が問われる可能性を意識する。

8.2 Application / Environment / Service / Pipeline

  • Q: test/prodなど独立したデプロイ先を表す概念は?
    A: Environment。VPC、ECSクラスター、共有ALBなどを持ち、承認済みのイメージを環境ごとに展開して統合テストに使う。
  • Q: インターネット向けのコンテナWebアプリに使うサービスタイプは?
    A: Load Balanced Web Service(ALBの背後のECS on Fargate)。
  • Q: SQSのメッセージを非同期に処理するコンテナは?
    A: Worker Service。SNSに購読したSQSキューをポーリングする。
  • Q: リクエスト量に応じて自動スケールし、VPCを意識しないWebサービスは?
    A: Request-Driven Web Service(AWS App Runner上で動く)。

8.3 ECSへのデプロイ自動化(CI/CD)

  • Q: Copilotのパイプラインは何で構成される?
    A: AWS CodePipelineとAWS CodeBuild。Gitへのpushを起点にイメージをビルドしてECRへpushし、各Environmentへ順にデプロイする。
  • Q: 本番Environmentへのデプロイ前に人の承認を入れるには?
    A: pipelineマニフェストのステージに手動承認を設定する(CodePipelineの承認アクション)。
  • Q: 次のステージへ昇格させる前に自動テストを実行するには?
    A: ステージにテストコマンドを設定し、CodeBuildで実行して成功時だけ昇格させる。
  • Q: Copilotが作るリソースの実体は?
    A: CloudFormationスタック。マニフェストがテンプレートへ変換されて展開されるため、サポート終了後もテンプレートを引き継いで管理できる。

8.4 設定とセキュリティ

  • Q: コンテナへDBパスワードを安全に渡すには?
    A: SSM Parameter StoreまたはSecrets Managerに保管し、マニフェストのsecretsで環境変数として注入する。
  • Q: 本番環境だけタスク数やCPUを変えるには?
    A: マニフェストのenvironmentsセクションでEnvironmentごとに値を上書きする。
  • Q: 稼働中のコンテナに入って調査するには?
    A: ECS Execを有効にしてcopilot svc execを使う。
  • Q: 既存のオンプレミスアプリを解析してコンテナ化したい場合、Copilotは適切?
    A: いいえ。Copilotは自分で用意したDockerfileを前提にデプロイするツールで、既存アプリの解析機能は持たない。