翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 マネジメントコンソールの代行として使用します。
前提条件と制限
前提条件
アクティブなAWS アカウント
AWS アカウントを使用するようにローカルにインストールされ、設定されている AWS Command Line Interface (AWS CLI) (AWS CLI) (AWS CLI ドキュメントのインストール手順 と設定手順 を参照)
AWS Copilot がローカルにインストールされている (Amazon ECS ドキュメントのインストール 手順を参照)
Docker がローカルマシンにインストールされている (Docker のドキュメント
を参照)
制約事項
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 サービス
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 リポジトリのクローンを作成します。 | 以下のコマンドを使用してサンプルコードリポジトリを複製します。
| アプリ開発者、AWS DevOps |
Amazon ECR リポジトリを作成します。 |
詳細については、Amazon ECR ユーザーガイドのリポジトリの作成 を参照してください。 | アプリ開発者、AWS DevOps |
Docker イメージをビルドし、タグ付けして Amazon ECR リポジトリにプッシュします。 |
レジストリに Docker クライアントを認証します。
Docker イメージの構築:
Docker イメージをタグ付けするには:
リポジトリにプッシュするイメージにタグを付けます。
| アプリ開発者、AWS DevOps |
アプリケーションをデプロイします。 |
CloudFormation テンプレートのデプロイに関する詳細については、CloudFormation ドキュメントのAWS CloudFormation ドキュメントでのスタックの作成 を参照してください。 | AWS DevOps、アプリケーション開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
GitHub リポジトリのクローンを作成します。 | 以下のコマンドを使用してサンプルコードリポジトリを複製します。
| アプリ開発者、AWS DevOps |
AWS Copilot CLI を使用してコンテナイメージを AWS にデプロイします。 | プロジェクトのルートディレクトリで以下のコマンドを使用して、アプリケーションを 1 ステップでデプロイします。
これで、出力として提供された DNS 名を使用してアプリケーションにアクセスできるはずです。 | アプリ開発者、AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
AWS マネジメントコンソールを使用して作成したリソースを削除します。 | オプション 1 (AWS マネジメントコンソール) を使用してアプリケーションスタックをデプロイした場合、作成したリソースを削除する準備ができたら次の手順に従います。
| アプリ開発者、AWS DevOps |
AWS Copilot によって作成されたリソースを削除します。 | オプション 2 (AWS Copilot CLI) を使用してアプリケーションスタックをデプロイした場合、作成したリソースを削除する準備ができたら次の手順に従います。
| アプリ開発者、AWS DevOps |
関連リソース
AWS CLI の最新バージョンをインストールまたは更新します (AWS CLI ドキュメント)
AWS Copilot コマンドラインインターフェイスの使用 (Amazon ECS ドキュメント)
AWS Fargate 上の Amazon ECS(Amazon ECS ドキュメント)
Docker デスクトップ
(Docker ドキュメント)