Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS Copilot を使用してクラスター化されたアプリケーションを Amazon ECS にデプロイする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Copilot を使用してクラスター化されたアプリケーションを Amazon ECS にデプロイする

ジャン・バティスト・ギロワ (AWS)、マシュー・ジョージ (AWS)、トーマス・スコット (AWS) によって作成されました

概要

このパターンは、Amazon Elastic Container Service (Amazon ECS) クラスターにコンテナをデプロイする方法を示しています。これは、Amazon Web Services (AWS) マネジメントコンソールを使用する方法と AWS Copilot を使用する方法で、AWS Copilot がデプロイタスクを簡素化する方法を示しています。

Amazon ECS は、クラスターでコンテナを簡単に実行、停止、管理できる非常にスケーラブルで高速なコンテナ管理サービスです。コンテナは、個々のタスクやサービス内のタスクを実行するために使用するタスク定義で定義されます。タスクとサービスは、AWS Fargate で管理されているサーバーレスインフラストラクチャで実行できます。または、インフラストラクチャをより詳細に制御するために、管理する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのクラスターでタスクとサービスを実行できます。

AWS Copilot コマンドラインインターフェイスの継続的インテグレーションと継続的デリバリー (CLI) コマンドは、ローカル開発環境から、Amazon ECS での本番稼働対応のコンテナ化されたアプリケーションの構築、リリース、および運用を簡素化します。AWS Copilot CLI は、Infrastructure as Code 使用することから、ユーザーの代わりにプロビジョニングされた継続的インテグレーションと継続的デリバリー(CI/CD)パイプラインを作成することまで、最新のアプリケーションのベストプラクティスをサポートするデベロッパーワークフローと連携します。AWS Copilot CLI を毎日の開発の一部として使用し、 の代替としてテストのサイクルをAWS マネジメントコンソールの代行として使用します。

前提条件と制限

前提条件

制約事項

  • Docker は無料プランでは、IP アドレスごとに 6 時間あたり 100 個のコンテナイメージのプル制限を設けています。

アーキテクチャ

ターゲットテクノロジースタック

  • 仮想プライベートクラウド (VPC)、パブリックおよびプライベートサブネット、およびセキュリティグループを使用して設定される AWS 環境

  • Amazon ECS クラスター

  • Amazon ECS サービスとタスク定義

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon DynamoDB

  • Application Load Balancer

  • AWS Fargate

  • Amazon Identity and Access Management (IAM)

  • Amazon CloudWatch

  • AWS CloudTrail

ターゲット アーキテクチャ

このパターンのサンプルアプリケーションをデプロイすると、複数のタスクが作成され、別々のアベイラビリティーゾーンにデプロイされます。各タスクは Amazon DynamoDB にデータを保存します。あるタスクのウェブページにアクセスすると、他のすべてのタスクのデータを表示できます。

AWS Copilot でコンテナをデプロイするためのアーキテクチャ

ツール

AWS サービス

  • Amazon ECR  Amazon Elastic Container Registry (Amazon ECR) は、セキュリティ、スケーラビリティ、信頼性を備えた マネージドコンテナイメージレジストリサービスです。Amazon ECR は、 IAM を使用するリソースベースの許可を持つプライベートリポジトリをサポートします。

  • Amazon ECS – Amazon Elastic Container Service (Amazon ECS) は、クラスターでコンテナの実行、停止、管理を簡単に行うことのできる、高度にスケーラブルで高速なコンテナ管理サービスです。タスクとサービスは、AWS Fargate で管理されているサーバーレスインフラストラクチャで実行できます。または、インフラストラクチャをより詳細に制御するために、管理する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのクラスターでタスクとサービスを実行できます。

  • AWS Copilot — AWS Copilot には、レジストリへのプッシュ、タスク定義の作成、クラスターの作成など、コンテナ化されたアプリケーションを AWS で起動および管理するのに役立つコマンドラインインターフェイスが用意されています。

  • AWS Fargate — AWS Fargate はサーバーレスの従量制料金計算エンジンであり、サーバーを管理しなくてもアプリケーションの構築に集中できます。AWS Fargate は Amazon ECS とAmazon Elastic Kubernetes Service (Amazon EKS) の両方に対応しています。Fargate 起動タイプまたは Fargate 容量プロバイダーを使用して Amazon ECS タスクやサービスを実行する場合、アプリケーションをコンテナにパッケージ化し、CPU とメモリ要件を指定し、ネットワークとIAM ポリシーを定義して、アプリケーションを起動します。各Fargate タスクは、独自の分離境界を持ち、基盤となるカーネル、CPU リソース、メモリリソース、Elastic Network Interface を別のタスクと共有しません。

  • Amazon DynamoDB は、フルマネージド NoSQL データベースサービスであり、シームレスなスケーラビリティを備えた高速で予測可能なパフォーマンスを提供します。

  • Elastic Load Balancing (ELB) は、受信したトラフィックを複数のアベイラビリティーゾーンの複数のターゲット (EC2 インスタンス、コンテナ、IP アドレスなど) に自動的に分散させます。登録されているターゲットの状態をモニタリングし、正常なターゲットにのみトラフィックをルーティングします。Elastic Load Balancing は、受信トラフィックの時間的な変化に応じて、ロードバランサーをスケーリングします。また、大半のワークロードに合わせて自動的にスケーリングできます。

ツール

コード

このパターンで使用されているサンプルアプリケーションのコードは、GitHub のクラスターサンプルアプリケーション リポジトリにあります。次のセクションの指示に従って、サンプルファイルを使用します。

エピック

タスク説明必要なスキル
GitHub リポジトリのクローンを作成します。

以下のコマンドを使用してサンプルコードリポジトリを複製します。

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
アプリ開発者、AWS DevOps
Amazon ECR リポジトリを作成します。
  1. AWS マネジメントコンソールにサインインして Amazon ECRコンソール (https://console.aws.amazon.com/redshift/) を開きます。

  2. リポジトリの作成を選択します。

  3. リポジトリ名には、cluster-sample-app と入力します。

  4. 他の設定はすべてデフォルト値のままにしておきます。

  5. リポジトリの作成を選択します。

詳細については、Amazon ECR ユーザーガイドのリポジトリの作成 を参照してください。

アプリ開発者、AWS DevOps
Docker イメージをビルドし、タグ付けして Amazon ECR リポジトリにプッシュします。
  1. 作成したリポジトリを選択し、プッシュコマンドの表示を選択します。

  2. 表示されるコマンドをコピーしてローカルで実行し、docker イメージのビルド、タグ付け、プッシュを行います。 コマンドの出力は、次のようになります。

レジストリに Docker クライアントを認証します。

aws ecr get-login-password --region <YOUR_AWS_REGION> | docker login --username AWS --password-stdin <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com

Docker イメージの構築:

docker build -t cluster-sample-app .

Docker イメージをタグ付けするには:

docker tag cluster-sample-app:latest <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest

リポジトリにプッシュするイメージにタグを付けます。

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
アプリ開発者、AWS DevOps
アプリケーションをデプロイします。
  1. AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きます。

  2. スタックの作成 を選択します。

  3. テンプレートの準備 で、テンプレートの準備完了を選択します。

  4. テンプレートの指定セクションで、テンプレートファイルのアップロード を選択します。

  5. GitHub cluster-sample-app-stack.yml リポジトリからクローンしたローカルファイルを CloudFormation テンプレートとして選択し、次へ を選択します。

  6. スタックの名前を入力し、次へ を選択します。

  7. デフォルトのオプションを保持するには、次へを選択します。

  8. すべてのオプションを確認し、IAM リソースが作成されたことを確認して、スタックの作成を選択します。

  9. アプリケーションスタックがデプロイされたら、出力 タブを選択し、URL をコピーして、ブラウザで開いてアプリケーションにアクセスします。

CloudFormation テンプレートのデプロイに関する詳細については、CloudFormation ドキュメントのAWS CloudFormation ドキュメントでのスタックの作成 を参照してください。

AWS DevOps、アプリケーション開発者

アプリケーションスタックのデプロイ-オプション 1 (AWS マネジメントコンソール)

タスク説明必要なスキル
GitHub リポジトリのクローンを作成します。

以下のコマンドを使用してサンプルコードリポジトリを複製します。

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
アプリ開発者、AWS DevOps
Amazon ECR リポジトリを作成します。
  1. AWS マネジメントコンソールにサインインして Amazon ECRコンソール (https://console.aws.amazon.com/redshift/) を開きます。

  2. リポジトリの作成を選択します。

  3. リポジトリ名には、cluster-sample-app と入力します。

  4. 他の設定はすべてデフォルト値のままにしておきます。

  5. リポジトリの作成を選択します。

詳細については、Amazon ECR ユーザーガイドのリポジトリの作成 を参照してください。

アプリ開発者、AWS DevOps
Docker イメージをビルドし、タグ付けして Amazon ECR リポジトリにプッシュします。
  1. 作成したリポジトリを選択し、プッシュコマンドの表示を選択します。

  2. 表示されるコマンドをコピーしてローカルで実行し、docker イメージのビルド、タグ付け、プッシュを行います。 コマンドの出力は、次のようになります。

レジストリに Docker クライアントを認証します。

aws ecr get-login-password --region <YOUR_AWS_REGION> | docker login --username AWS --password-stdin <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com

Docker イメージの構築:

docker build -t cluster-sample-app .

Docker イメージをタグ付けするには:

docker tag cluster-sample-app:latest <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest

リポジトリにプッシュするイメージにタグを付けます。

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
アプリ開発者、AWS DevOps
アプリケーションをデプロイします。
  1. AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きます。

  2. スタックの作成 を選択します。

  3. テンプレートの準備 で、テンプレートの準備完了を選択します。

  4. テンプレートの指定セクションで、テンプレートファイルのアップロード を選択します。

  5. GitHub cluster-sample-app-stack.yml リポジトリからクローンしたローカルファイルを CloudFormation テンプレートとして選択し、次へ を選択します。

  6. スタックの名前を入力し、次へ を選択します。

  7. デフォルトのオプションを保持するには、次へを選択します。

  8. すべてのオプションを確認し、IAM リソースが作成されたことを確認して、スタックの作成を選択します。

  9. アプリケーションスタックがデプロイされたら、出力 タブを選択し、URL をコピーして、ブラウザで開いてアプリケーションにアクセスします。

CloudFormation テンプレートのデプロイに関する詳細については、CloudFormation ドキュメントのAWS CloudFormation ドキュメントでのスタックの作成 を参照してください。

AWS DevOps、アプリケーション開発者
タスク説明必要なスキル
GitHub リポジトリのクローンを作成します。

以下のコマンドを使用してサンプルコードリポジトリを複製します。

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
アプリ開発者、AWS DevOps
AWS Copilot CLI を使用してコンテナイメージを AWS にデプロイします。

プロジェクトのルートディレクトリで以下のコマンドを使用して、アプリケーションを 1 ステップでデプロイします。

copilot init --app cluster-sample-app --name demo --type "Load Balanced Web Service" --dockerfile ./Dockerfile --port 8080 --deploy

これで、出力として提供された DNS 名を使用してアプリケーションにアクセスできるはずです。

アプリ開発者、AWS DevOps

アプリケーションスタックのデプロイ-オプション 2 (AWS Copilot CLI)

タスク説明必要なスキル
GitHub リポジトリのクローンを作成します。

以下のコマンドを使用してサンプルコードリポジトリを複製します。

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
アプリ開発者、AWS DevOps
AWS Copilot CLI を使用してコンテナイメージを AWS にデプロイします。

プロジェクトのルートディレクトリで以下のコマンドを使用して、アプリケーションを 1 ステップでデプロイします。

copilot init --app cluster-sample-app --name demo --type "Load Balanced Web Service" --dockerfile ./Dockerfile --port 8080 --deploy

これで、出力として提供された DNS 名を使用してアプリケーションにアクセスできるはずです。

アプリ開発者、AWS DevOps
タスク説明必要なスキル
AWS マネジメントコンソールを使用して作成したリソースを削除します。

オプション 1 (AWS マネジメントコンソール) を使用してアプリケーションスタックをデプロイした場合、作成したリソースを削除する準備ができたら次の手順に従います。

  1. クラウドフォーメーション コンソール のhttps://console.aws.amazon.com/cloudformation/ 開きます:

  2. 作成したロールを選択し、削除を選択します。

  3. https://console.aws.amazon.com/ecr/repositories で Amazon ECR コンソールを開きます。

  4. 作成したリポジトリを選択し、削除を選択します。

アプリ開発者、AWS DevOps
AWS Copilot によって作成されたリソースを削除します。

オプション 2 (AWS Copilot CLI) を使用してアプリケーションスタックをデプロイした場合、作成したリソースを削除する準備ができたら次の手順に従います。

copilot app delete
アプリ開発者、AWS DevOps

作成したリソースを削除します。

タスク説明必要なスキル
AWS マネジメントコンソールを使用して作成したリソースを削除します。

オプション 1 (AWS マネジメントコンソール) を使用してアプリケーションスタックをデプロイした場合、作成したリソースを削除する準備ができたら次の手順に従います。

  1. クラウドフォーメーション コンソール のhttps://console.aws.amazon.com/cloudformation/ 開きます:

  2. 作成したロールを選択し、削除を選択します。

  3. https://console.aws.amazon.com/ecr/repositories で Amazon ECR コンソールを開きます。

  4. 作成したリポジトリを選択し、削除を選択します。

アプリ開発者、AWS DevOps
AWS Copilot によって作成されたリソースを削除します。

オプション 2 (AWS Copilot CLI) を使用してアプリケーションスタックをデプロイした場合、作成したリソースを削除する準備ができたら次の手順に従います。

copilot app delete
アプリ開発者、AWS DevOps

関連リソース

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.