AWS認定資格 WEB問題集&徹底解説デベロッパー アソシエイト(DVA)
AWSサービスの一つであるAWS Copilotはどんな内容なのでしょうか?また、AWS認定資格のデベロッパー-アソシエイト(DVA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
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. アーキテクチャおよび技術要素
copilot app initでApplicationを作成する。アプリケーションの構成情報はアカウント内のSSM Parameter Storeに保存される。copilot env init/copilot env deployでEnvironmentを作る。既定で2AZのVPC、ECSクラスター、セキュリティグループ、プライベートDNS名前空間が作られ、ALBはEnvironment内で共有される。既存VPCの利用も可能。copilot svc init/copilot svc deployでServiceを作る。ローカルでDockerイメージをビルドしてECRへpushし、マニフェストから生成したCloudFormationスタックでECSサービスやApp Runnerサービスを展開する。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を使う)。
- Dockerfileのあるディレクトリで
copilot initを実行し、Application、Service、test Environmentを作成してデプロイする。 copilot env init --name prodとcopilot env deploy --name prodで本番用Environmentを追加する。copilot/[サービス名]/manifest.ymlを編集し、copilot svc deploy --env prodで本番へ展開する。copilot pipeline initでpipelineマニフェストとbuildspecを生成し、ステージの順序、テストコマンド、手動承認を設定してcopilot pipeline deployする。- (移行)
copilot app ls、copilot svc ls、copilot svc show --jsonで既存の構成を棚卸しする。 - Webサービスは
aws ecs create-express-gateway-serviceやECSコンソールでExpress Modeのサービスを作るか、CDKのL3コンストラクトで同等の構成をコード化する。 - 新環境の確認と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を前提にデプロイするツールで、既存アプリの解析機能は持たない。