❗ ❗ ❗ このプロジェクトは現在積極的に維持されていないことに注意してください。 AWS 上で新しい Fargate をデプロイするためのより良いオプションは、AWS Copilot CLI です。これは、より機能が高く、AWS によって積極的に保守されています。 ❗❗❗
デフォルトでは、Fargate はus-east-1を使用します。 CLI は --region パラメータを受け入れ、 AWS_REGIONおよびAWS_DEFAULT_REGION環境設定を尊重します。必要なサービスがすべて利用できないリージョンを指定すると、エラーが返されることに注意してください。
どのリージョンでどのサービスが利用できるかの詳細については、リージョン表を参照してください。
fargate は、次の場所で認証情報を検索する AWS SDK for Go を使用して構築されています。
環境変数
共有認証情報ファイル
EC2インスタンスプロファイル
詳細については、AWS SDK for Go ドキュメントの「認証情報の指定」を参照してください。
フラグ | デフォルト | 説明 |
---|---|---|
- クラスタ | ファーゲート | ECSクラスター名 |
- 地域 | 米国東部-1 | AWS リージョン |
--色なし | 間違い | カラー出力を無効にする |
--冗長 | 間違い | 詳細な出力 |
タスクはコンテナーの 1 回限りの実行です。タスクのインスタンスは、AWS API、AWS マネジメントコンソール、 fargate task stop
のいずれかを介して手動で停止するか、何らかの理由で中断されるまで実行されます。
fargate task list
実行中のタスクグループをリストする
fargate task run <task-group-name> [--num <count>] [--cpu <cpu-units>] [--memory <MiB>]
[--image <docker-image>] [--env <key=value>]
[--task-role <task-role>] [--subnet-id <subnet-id>]
[--security-group-id <security-group-id>]
新しいタスクを実行する
後続のコマンドでタスクを操作してログを表示し、タスクを停止して検査するには、タスク グループ名を指定する必要があります。タスク グループ名は一意である必要はありません。同じタスク グループでタスク インスタンスの複数の構成を開始できます。
--num フラグに数値を指定すると、タスクの複数のインスタンスを実行できます。数値が指定されていない場合は、単一のタスク インスタンスが実行されます。
CPU とメモリの設定は、--cpu フラグと --memory フラグを使用して、それぞれ CPU ユニットとメビバイトとしてオプションで指定できます。 1024 個の CPU ユニットはそれぞれ 1 つの vCPU に相当します。 AWS Fargate は、CPU とメモリ構成の特定の組み合わせのみをサポートします。
CPU(CPUユニット) | メモリ (MiB) |
---|---|
256 | 512、1024、または 2048 |
512 | 1024 ~ 4096 (1GiB 単位) |
1024 | 2048 ~ 8192 (1GiB 単位) |
2048年 | 4096 ~ 16384 (1GiB 増分) |
4096 | 8192 ~ 30720 (1GiB 単位) |
指定しない場合、Fargate は 0.25 vCPU (256 CPU ユニット) と 0.5GB (512 MiB) のメモリで最小サイズのタスクを起動します。
タスクで使用する Docker コンテナ イメージは、オプションで --image フラグを使用して指定できます。指定しない場合、Fargate は現在の作業ディレクトリから新しい Docker コンテナイメージを構築し、タスクグループの名前が付けられたリポジトリ内の Amazon ECR にプッシュします。現在の作業ディレクトリが git リポジトリの場合、コンテナ イメージには HEAD コミットの短い参照のタグが付けられます。そうでない場合は、YYYYMMDDHHMMSS 形式のタイムスタンプが使用されます。
環境変数は --env フラグを介して指定できます。複数の変数を追加するには、key=value パラメーターを使用して --env を複数回指定します。
オプションで、セキュリティ グループ ID を指定して --security-group-id フラグを渡すことで、タスクにセキュリティ グループを指定できます。複数のセキュリティ グループを追加するには、セキュリティ グループ ID を指定して --security-group-id を複数回渡します。 --security-group-id を省略した場合、タスクには寛容なセキュリティ グループが適用されます。
デフォルトでは、タスクはデフォルト VPC 内に作成され、各アベイラビリティーゾーンのデフォルト VPC サブネットにアタッチされます。これをオーバーライドするには、サブネット ID を指定して --subnet-id フラグを渡し、明示的にサブネットを指定します。
タスク ロールは、完全な IAM ロール ARN または IAM ロールの名前を指定することで、--task-role フラグを介してオプションで指定できます。タスクはこの役割を引き受けることができます。
fargate task info <task-group-name> [--task <task-id>]
タスクの検査
タスク グループ内の実行中の各タスク、または --task フラグで指定された特定のタスクの拡張情報を表示します。情報には、タスク グループ内のタスク間で異なる可能性がある環境変数が含まれます。タスク ID を持つタスク グループ固有の --task 内の複数の特定のタスクを複数回検査するには。
fargate task ps <task-group-name>
実行中のタスクをリストする
fargate task logs <task-group-name> [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
タスクのログを表示する
--follow オプションを使用して、タスク ログの特定のセグメントまたは末尾のログをリアルタイムで返します。ログには、「fargate/<task-group-name>/<task-id>」の形式のログ ストリーム名が接頭辞として付けられます。
Follow は、Control-C で中断されるまで実行を続け、ログを返します。 --follow を渡した場合、--end は指定できません。
--task フラグを介してタスク ID を渡すことで、タスク グループ内の特定のタスクのログを返すことができます。複数の特定のタスクからログを取得するには、タスク ID を指定して --task を複数回渡します。
--start および --end オプションを時間式とともに渡すことで、ログの特定のウィンドウを要求できます。時間表現は期間またはタイムスタンプのいずれかになります。
--filter フラグを介してフィルター式を渡すことで、特定の用語のログをフィルターできます。単一の用語を渡すとその用語を検索し、複数の用語を渡すとすべての用語を含むログ メッセージを検索します。詳細については、CloudWatch Logs のドキュメントを参照してください。
fargate task stop <task-group-name> [--task <task-id>]
タスクの停止
タスク グループ名のみで実行した場合はタスク グループ内のすべてのタスクを停止し、--task フラグを介して 1 つ以上のタスクが渡された場合は個々のタスクを停止します。複数の特定のタスクを停止するには、タスク ID パラメーターを指定して --task を複数回指定します。
サービスは、AWS Fargate で実行されるコンテナの長期インスタンスを管理します。何らかの理由でコンテナが終了した場合、サービス スケジューラはコンテナを再起動し、サービスで必要な数のタスクが実行されるようにします。サービスをロード バランサーと連携して使用して、サービス内のタスク間でトラフィックを分散できます。
fargate service list
リストサービス
fargate service create <service name> [--cpu <cpu units>] [--memory <MiB>] [--port <port-expression>]
[--lb <load-balancer-name>] [--rule <rule-expression>]
[--image <docker-image>] [--env <key=value>] [--num <count>]
[--task-role <task-role>] [--subnet-id <subnet-id>]
[--security-group-id <security-group-id>]
新しいサービスを作成する
CPU とメモリの設定は、--cpu フラグと --memory フラグを使用して、それぞれ CPU ユニットとメビバイトとしてオプションで指定できます。 1024 個の CPU ユニットはそれぞれ 1 つの vCPU に相当します。 AWS Fargate は、CPU とメモリ構成の特定の組み合わせのみをサポートします。
CPU(CPUユニット) | メモリ (MiB) |
---|---|
256 | 512、1024、または 2048 |
512 | 1024 ~ 4096 (1GiB 単位) |
1024 | 2048 ~ 8192 (1GiB 単位) |
2048年 | 4096 ~ 16384 (1GiB 増分) |
4096 | 8192 ~ 30720 (1GiB 単位) |
指定しない場合、Fargate は 0.25 vCPU (256 CPU ユニット) と 0.5GB (512 MiB) のメモリで最小サイズのタスクを起動します。
サービスで使用する Docker コンテナ イメージは、オプションで --image フラグを使用して指定できます。指定しない場合、Fargate は現在の作業ディレクトリから新しい Docker コンテナイメージを構築し、タスクグループの名前が付けられたリポジトリ内の Amazon ECR にプッシュします。現在の作業ディレクトリが git リポジトリの場合、コンテナ イメージには HEAD コミットの短い参照のタグが付けられます。そうでない場合は、YYYYMMDDHHMMSS 形式のタイムスタンプが使用されます。
ロード バランサーでサービスを使用するには、サービスの作成時にポートを指定する必要があります。 --port フラグと、protocol:port-number のポート式を渡して、ポートを指定します。たとえば、サービスがポート 80 でリッスンし、HTTP を使用する場合は、HTTP:80 を指定します。有効なプロトコルは、HTTP、HTTPS、および TCP です。指定できるポートは 1 つだけです。
オプションで、ロード バランサーを使用するようにサービスを構成できます。サービスの前にロード バランサーを配置するには、ロード バランサーの名前を指定して --lb フラグを渡します。ロード バランサーを指定する場合は、ロード バランサーがリクエストを転送する先のポートも --port フラグで指定する必要があります。オプションで、ルールに基づいて HTTP/HTTPS トラフィックをサービスにルーティングするように Application Load Balancer を構成できます。ルールは、ルール式とともに --rule フラグを指定して 1 つ以上のルールを渡すことによって構成されます。ルール式は TYPE=VALUE の形式です。タイプは PATH または HOST のいずれかです。 PATH はリクエストの PATH と一致し、HOST は HTTP リクエストでリクエストされたホスト名と一致します。 PATH タイプと HOST タイプの両方に、ワイルドカード文字を 3 つまで含めることができます。複数の文字に一致する * と ?単一の文字と一致します。ルールを省略した場合、サービスはロード バランサーのデフォルトのアクションになります。
環境変数は --env フラグを介して指定できます。複数の変数を追加するには、key=value パラメーターを使用して --env を複数回指定します。
--num フラグに数値を渡して、サービスが維持する必要があるタスクの数を指定します。このフラグを省略すると、Fargate は必要なタスク数 1 でサービスを構成します。
オプションで、 --security-group-id フラグにセキュリティ グループ ID を渡すことで、サービスにセキュリティ グループを指定できます。複数のセキュリティ グループを追加するには、セキュリティ グループ ID を指定して --security-group-id を複数回渡します。 --security-group-id を省略した場合、許容的なセキュリティ グループがサービスに適用されます。
デフォルトでは、サービスはデフォルト VPC 内に作成され、各アベイラビリティーゾーンのデフォルト VPC サブネットに接続されます。これをオーバーライドするには、サブネット ID を指定して --subnet-id フラグを渡し、明示的にサブネットを指定します。
タスク ロールは、完全な IAM ロール ARN または IAM ロールの名前を指定することで、--task-role フラグを介してオプションで指定できます。サービスによって実行されるタスクは、この役割を引き受けることができます。
fargate service deploy <service-name> [--image <docker-image>]
新しいイメージをサービスにデプロイする
サービスで使用する Docker コンテナ イメージは、オプションで --image フラグを使用して指定できます。指定しない場合、Fargate は現在の作業ディレクトリから新しい Docker コンテナイメージを構築し、タスクグループの名前が付けられたリポジトリ内の Amazon ECR にプッシュします。現在の作業ディレクトリが git リポジトリの場合、コンテナ イメージには HEAD コミットの短い参照のタグが付けられます。そうでない場合は、YYYYMMDDHHMMSS 形式のタイムスタンプが使用されます。
fargate service info <service-name>
検査サービス
ロード・バランサー構成、アクティブなデプロイメント、環境変数などのサービスの拡張情報を表示します。
デプロイメントには、実行中のサービスのアクティブなバージョンが表示されます。 CPU、メモリ、環境変数などの構成のデプロイメントまたは更新によってサービスが移行している場合、複数のデプロイメントが表示されます。
fargate service logs <service-name> [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
サービス内のタスクのログを表示する
--follow オプションを使用して、サービス ログの特定のセグメントまたは末尾のログをリアルタイムで返します。ログには、「fargate/<service-name>/<task-id>」の形式のログ ストリーム名が接頭辞として付けられます。
Follow は、Control-C で中断されるまで実行を続け、ログを返します。 --follow を渡した場合、--end は指定できません。
--task フラグを介してタスク ID を渡すことで、サービス内の特定のタスクのログを返すことができます。複数の特定のタスクからログを取得するには、タスク ID を指定して --task を複数回渡します。
--start および --end オプションを時間式とともに渡すことで、ログの特定のウィンドウを要求できます。時間表現は期間またはタイムスタンプのいずれかになります。
--filter フラグを介してフィルター式を渡すことで、特定の用語のログをフィルターできます。単一の用語を渡すとその用語を検索し、複数の用語を渡すとすべての用語を含むログ メッセージを検索します。詳細については、CloudWatch Logs のドキュメントを参照してください。
fargate service ps <service-name>
サービスの実行中のタスクをリストする
fargate service scale <service-name> <scale-expression>
サービス内のタスクの数をスケールする
指定されたスケール式によって、サービス内で実行する必要なタスクの数を変更します。スケール式は、絶対数か、+5 や -2 などの符号で指定されたデルタのいずれかになります。
fargate service env set <service-name> --env <key=value>
環境変数を設定する
--env フラグを使用して、少なくとも 1 つの環境変数を指定する必要があります。複数の変数を追加するには、key=value パラメーターを使用して --env を複数回指定します。
fargate service env unset <service-name> --key <key-name>
環境変数の設定を解除する
--key フラグで指定された環境変数の設定を解除します。複数の変数の設定を解除するには、キー名を指定して --key を複数回指定します。
fargate service env list <service-name>
環境変数を表示する
fargate service update <service-name> [--cpu <cpu-units>] [--memory <MiB>]
サービス構成を更新する
CPU とメモリの設定は、--cpu フラグと --memory フラグを使用して、それぞれ CPU ユニットとメビバイトとして指定されます。 1024 個の CPU ユニットはそれぞれ 1 つの vCPU に相当します。 AWS Fargate は、CPU とメモリ構成の特定の組み合わせのみをサポートします。
CPU(CPUユニット) | メモリ (MiB) |
---|---|
256 | 512、1024、または 2048 |
512 | 1024 ~ 4096 (1GiB 単位) |
1024 | 2048 ~ 8192 (1GiB 単位) |
2048年 | 4096 ~ 16384 (1GiB 増分) |
4096 | 8192 ~ 30720 (1GiB 単位) |
--cpu または --memory の少なくとも 1 つを指定する必要があります。
fargate service restart <service-name>
サービスを再起動する
サービスの新しいタスクのセットを作成し、以前のタスクを停止します。これは、サービスが外部ソースからキャッシュされたデータを再ロードする必要がある場合などに便利です。
fargate service destroy <service-name>
サービスを破棄する
サービスを破棄するには、まず実行タスクが 0 になるまでサービスをスケーリングする必要があります。
ロード バランサーは、HTTP/HTTPS および TCP アプリケーションのサービス内のタスク間で受信トラフィックを分散します。 HTTP/HTTPS ロード バランサーは、新しいサービスの作成時に指定したルールに基づいて、複数のサービスにルーティングできます。
fargate lb list
ロードバランサーのリストを表示する
fargate lb create <load-balancer-name> --port <port-expression> [--certificate <certificate-name>]
[--subnet-id <subnet-id>] [--security-group-id <security-group-id>]
[--scheme <lb-scheme>]
ロードバランサを作成する
--port フラグと port-number のポート式を使用して、ロード バランサー リスナーに少なくとも 1 つのポートを指定する必要があります。たとえば、HTTP ロード バランサがポート 80 でリッスンするようにする場合は、HTTP:80 を指定します。有効なプロトコルは、HTTP、HTTPS、および TCP です。ポート式で --port フラグを複数回渡すことで、複数のリスナーを指定できます。単一のロード バランサー上で TCP ポートと HTTP/HTTPS ポートを混在させることはできません。
オプションで、 --certificate フラグを証明書名とともに渡すことで、HTTPS ポートを保護するための証明書を含めることができます。このオプションを複数回指定すると、Service Name Identification (SNI) を使用して要求に適切な証明書を選択する単一のロード バランサーに追加の証明書を追加できます。
デフォルトでは、ロードバランサーはデフォルト VPC 内に作成され、各アベイラビリティーゾーンのデフォルト VPC サブネットに接続されます。これをオーバーライドするには、サブネット ID を指定して --subnet-id フラグを渡し、明示的にサブネットを指定します。 HTTP/HTTPS ロード バランサーには少なくとも 2 つのサブネットが接続されている必要がありますが、TCP ロード バランサーには 1 つだけが必要です。各アベイラビリティ ゾーンから指定できるサブネットは 1 つだけです。
オプションで、セキュリティ グループ ID を指定して --security-group-id フラグを渡すことで、HTTP/HTTPS ロード バランサにセキュリティ グループを指定できます。複数のセキュリティ グループを追加するには、セキュリティ グループ ID を指定して --security-group-id を複数回渡します。 --security-group-id を省略した場合、寛容なセキュリティ グループがロード バランサーに適用されます。
--scheme フラグを使用してロード バランサーのスキーム タイプを選択することもできます。デフォルトでは、ロード バランサーはインターネットに接続されています。
fargate lb destroy <load-balancer-name>
ロードバランサーを破棄する
fargate lb alias <load-balancer-name> <hostname>
ロードバランサーのエイリアスレコードを作成する
Amazon Route 53 内および同じ AWS アカウント内でホストされているドメインのロードバランサーにエイリアス レコードを作成します。別の DNS プロバイダーを使用している場合、または別のアカウントでドメインをホストしている場合は、このレコードを手動で作成する必要があります。
fargate lb info <load-balancer-name>
ロードバランサーを検査する
ロード バランサーで使用されているリスナー、ルール、証明書のリストなど、ロード バランサーに関する拡張情報を返します。
証明書は、ロードバランサーとエンドユーザー間のトラフィックを保護するために使用するために、AWS Certificate Manager によって発行されるか、AWS Certificate Manager にインポートされる TLS 証明書です。 ACM は、AWS リソース内で使用するための TLS 証明書を無料で提供します。
fargate certificate list
証明書のリストを表示する
fargate certificate import <domain-name> --certificate <filename> --key <filename> [--chain <filename>]
証明書をインポートする
証明書ファイル、秘密キー ファイル、およびオプションで中間証明書チェーン ファイルから証明書をアップロードします。ファイルは PEM でエンコードされている必要があり、秘密キーはパスフレーズで暗号化または保護されてはなりません。詳細については、AWS Certificate Manager のドキュメントを参照してください。
fargate certificate request <domain-name> [--alias <domain-name>]
証明書をリクエストする
証明書は、完全修飾ドメイン名 (例: www.example.com) またはワイルドカード ドメイン名 (例: *.example.com) のものです。 --alias フラグを使用して追加のドメイン名を指定することで、証明書にエイリアスを追加できます。複数のエイリアスを追加するには、--alias を複数回渡します。デフォルトでは、AWS Certificate Manager には証明書あたり 10 個のドメイン名という制限がありますが、この制限は AWS サポートによって引き上げられる可能性があります。
fargate certificate info <domain-name>
証明書を検査する
証明書の拡張情報を表示します。ドメインの所有権を検証するために作成する必要がある DNS レコードを示す証明書の各検証が含まれます。
fargate certificate validate <domain-name>
証明書の所有権を検証する
Fargate は、Amazon Route 53 内でホストされているドメイン名の所有権を確認するために、DNS 検証レコードを自動的に作成します。証明書にエイリアスがある場合、エイリアスごとに検証レコードが試行されます。ドメインが他の DNS ホスティング プロバイダーまたは他の DNS アカウントでホストされており、自動的に検証できないレコードには、必要なレコードが出力されます。これらのレコードは、 fargate certificate info <domain-name>
でも入手できます。
AWS Certificate Manager は、DNS レコードの作成後、検証を完了して証明書を発行するまでに最大で数時間かかる場合があります。
fargate certificate destroy <domain-name>
証明書を破棄する
証明書を破棄するには、その証明書がロードバランサーまたは他の AWS リソースによって使用されていない必要があります。