Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

ecs-cli compose service create

構成ファイルから Amazon ECS サービスを作成します。サービスは必要数を 0 として作成されるため、このコマンドによってコンテナは開始されません。

構文

ecs-cli compose service create [--deployment-max-percent n] [--deployment-min-healthy-percent n] [--load-balancer-name value|--target-group-arn value] [--container-name value] [--container-port value] [--role value] [--launch-type launch_type] [--health-check-grace-period integer] [--create-log-groups] [--enable-service-discovery] [--vpc value] [--private-dns-namespace value] [--private-dns-namespace-id value] [--public-dns-namespace value] [--public-dns-namespace-id value] [--sd-container-name value] [--sd-container-port value] [--dns-ttl value] [--dns-type value] [--healthcheck-custom-config-failure-threshold value] [--scheduling-strategy value] [--tags key1=value1,key2=value2] [--disable-ecs-managed-tags] [--help]

オプション

名前 説明

--deployment-max-percent

デプロイ時にサービスで実行中にできるタスクの数の上限 (サービスの desiredCount の割合 (%)) を指定します。詳細については、「maximumPercent」を参照してください。

デフォルト値: 200

必須: いいえ

--deployment-min-healthy-percent

デプロイ時にサービスで実行中で正常な状態を維持する必要のあるタスクの数の下限 (サービスの desiredCount の割合 (%)) を指定します。詳細については、「minimumHealthyPercent」を参照してください。

デフォルト値: 100

必須: いいえ

--target-group-arn

サービスに関連付ける設定済みの Elastic Load Balancing ターゲットグループの完全な Amazon リソースネーム (ARN) を指定します。

必須: いいえ

--container-name

コンテナ名 (コンテナの定義に表示される) を指定します。このパラメータは、ロードバランサーまたはターゲットグループが指定されている場合は必須です。

必須: いいえ (ロードバランサーまたはターゲットグループが指定されている場合は除く)。

--container-port

ロードバランサーに関連付けるコンテナのポートを指定します。このポートは、サービスのタスク定義の containerPort に対応する必要があります。このパラメータは、ロードバランサーまたはターゲットグループが指定されている場合は必須です。

必須: いいえ (ロードバランサーまたはターゲットグループが指定されている場合は除く)。

--load-balancer-name

サービスに関連付ける設定済みの Elastic Load Balancing ロードバランサーの名前を指定します。

必須: いいえ

--role

お客様に代わって、ロードバランサーまたはターゲットグループへの呼び出しを Amazon ECS に許可する IAM ロールの名前または完全な Amazon リソースネーム (ARN) を指定します。このパラメータは、サービスでロードバランサーまたはターゲットグループを使用している場合に必要です。ロールパラメータを指定する場合は、コンテナ名とコンテナーポートだけでなく、ロードバランサー名またはターゲットグループ ARN も指定する必要があります。

必須: いいえ (ロードバランサーまたはターゲットグループが指定されている場合は除く)。

--health-check-grace-period

タスクが最初に開始されてから、Amazon ECS サービススケジューラで Elastic Load Balancing ターゲットのヘルスチェックが無視される期間 (秒) を指定します。

必須: いいえ

--create-log-groups

構成ファイルで指定された CloudWatch ロググループを作成します。

必須: いいえ

--enable-service-discovery

サービス検出がこのサービスに対して有効かどうかを指定します。

必須: いいえ

--vpc

サービス検出 のプライベート DNS 名前空間にアタッチされる VPC を指定します。このパラメータは、--private-dns-namespace を指定した場合に必須です。

必須: いいえ

--private-dns-namespace

サービス検出 と使用する既存のプライベート DNS 名前空間の名前を指定します。名前空間が存在しない場合は、Amazon ECS CLI によって自動的に作成されます。たとえば、名前空間が corp の場合、foo というサービスは、DNS 経由で foo.corp で到達できます。このパラメータを使用する場合は、--vpc パラメータを使用して VPC も指定する必要があります。

必須: いいえ

--private-dns-namespace-id

サービス検出 と使用する既存のプライベート DNS 名前空間の ID を指定します。このパラメータを使用する場合は、--private-dns-namespace または --vpc を指定することはできません。

必須: いいえ

--public-dns-namespace

サービス検出 と使用する既存のパブリック DNS 名前空間の名前を指定します。たとえば、名前空間が corp の場合、foo というサービスは、DNS 経由で foo.corp で到達できます。

必須: いいえ

--public-dns-namespace-id

サービス検出 と使用する既存のパブリック DNS 名前空間の ID を指定します。このパラメータを使用する場合は、--public-dns-namespace を指定することはできません。

必須: いいえ

--sd-container-name

コンテナの名前を指定します。この名前は、Docker Compose ファイルでサービスと呼ばれます。詳細については、「サービス設定のリファレンス」を参照してください。このパラメータは、SRV レコードを使用している場合は必須です。

必須: いいえ (SRV DNS レコードを使用している場合は除く)。

--sd-container-port

サービス検出 に使用されるコンテナのポートを指定します。このパラメータは、SRV レコードを使用している場合は必須です。

必須: いいえ (SRV DNS レコードを使用している場合は除く)。

--dns-ttl

DNS リゾルバーで、サービス検出 に使用される DNS レコードの設定をキャッシュする時間 (秒) で指定します。

デフォルト値: 60

必須: いいえ

--dns-type

サービス検出 で使用される DNS レコードのタイプを指定します。有効な値は、「A」と「SRV」です。タスク定義で bridge または host のネットワークモードを使用している場合は、SRV レコードが必須です。タスク定義で awsvpc ネットワークモードを使用している場合は、A レコードがデフォルトです。

必須: いいえ

--healthcheck-custom-config-failure-threshold

サービス検出 サービスで UpdateInstanceCustomHealthStatus リクエストを受信してから、そのヘルスステータスを変更するまでに待機する数値 (30 秒間隔) を指定します。

デフォルト値: 1

必須: いいえ

--scheduling-strategy value

サービスに使用するスケジュール戦略を指定します。

利用できる 2 つのサービススケジューラ戦略があります。

  • REPLICA — レプリカスケジュール戦略では、クラスター全体で必要数のタスクを配置して維持します。デフォルトでは、サービススケジューラによってタスクはアベイラビリティーゾーン間で分散されます。タスク配置の戦略と制約を使用すると、タスク配置の決定をカスタマイズできます。詳細については、「レプリカ」を参照してください。

  • DAEMON — デーモンのスケジュール戦略では、指定したすべてのタスク配置制約を満たすクラスター内のアクティブなコンテナインスタンスごとに、1 つのタスクのみをデプロイします。この戦略を使用する場合、タスクの必要数や配置戦略、サービスの Auto Scaling ポリシーを指定する必要はありません。詳細については、「デーモン」を参照してください。

    注記

    Fargate タスクは DAEMON スケジューリング戦略をサポートしていません。

詳細については、「サービススケジューラの概念」を参照してください。

型: 文字列

有効な値: REPLICA | DAEMON

デフォルト値: REPLICA

必須: いいえ

--tags key1=value1,key2=value2

AWS リソースに適用されるメタデータを指定します。各タグはキーとオプションの値で構成されます。タグは次の形式を使用します: key1=value1,key2=value2,key3=value3。新しい Amazon リソースネーム (ARN) およびリソース識別子 (ID) フォーマットを使用することを選択した場合、--disable-ecs-managed-tags フラグを使用して明確に無効にしない限りは Amazon ECS マネージドタグがデフォルトで有効になります。詳細については、「リソースのタグ付け」を参照してください。

タイプ: キー値ペア

必須: いいえ

--disable-ecs-managed-tags

Amazon ECS 管理のタグを無効にします。詳細については、「請求用のリソースにタグを付ける」を参照してください。

必須: いいえ

--region, -r region

使用する AWS リージョンを指定します。configure コマンドを使用して設定したクラスターにデフォルトが設定されます。

型: 文字列

必須: いいえ

--cluster-config cluster_config_name

使用する Amazon ECS クラスター設定の名前を指定します。デフォルトでは、デフォルトとして設定するクラスター設定が指定されます。

型: 文字列

必須: いいえ

--ecs-profile ecs_profile

使用する Amazon ECS プロファイル設定の名前を指定します。configure profile コマンドを使用して設定したプロファイルにデフォルト設定されます。

型: 文字列

必須: いいえ

--aws-profile aws_profile

使用する AWS プロファイルを指定します。~/.aws/credentials という名前の既存のプロファイルから、AWS 認証情報を使用することができます。

型: 文字列

必須: いいえ

--cluster, -c cluster_name

使用する Amazon ECS クラスター名を指定します。configure コマンドを使用して設定したクラスターにデフォルトが設定されます。

型: 文字列

必須: いいえ

--help, -h

指定したコマンドのヘルプテキストを表示します。

必須: いいえ

ロードバランサーの使用

オプションで、ロードバランサーの背後でサービスを実行できます。ロードバランサーは、サービスに関連付けられたタスク間でトラフィックを分散させます。詳細については、「サービスロードバランシング」を参照してください。サービスを作成した後、サービス定義で指定されているロードバランサー名、ターゲットグループ ARN、コンテナ名、コンテナポートはイミュータブルです。

注記

それらを使用するようサービスを設定する前に、ロードバランサーリソースを作成する必要があります。ロードバランサーリソースはコンテナインスタンスと同じ VPC にあり、同じサブネットを使用するよう設定する必要があります。また、ロードバランサーからの着信トラフィックを許可するコンテナインスタンスのセキュリティグループに、セキュリティグループルールを追加する必要があります。詳細については、「ロードバランサーの作成」を参照してください。

  • 既存の Elastic Load Balancing Classic Load Balancer を使用するようサービスを設定するには、ロードバランサー名、(コンテナの定義に表示されるとおりの) コンテナ名、およびロードバランサーからアクセスするコンテナポートを指定する必要があります。このサービスのタスクがコンテナインスタンスに配置されると、コンテナインスタンスはここで指定したロードバランサーに登録されます。

  • 既存の Elastic Load Balancing Application Load Balancer を使用するようサービスを設定するには、ロードバランサーのターゲットグループ ARN、(コンテナの定義に表示されるとおりの) コンテナ名、およびロードバランサーからアクセスするコンテナポートを指定する必要があります。このサービスのタスクがコンテナインスタンスに配置されると、コンテナインスタンスとポートの組み合わせは、ここで指定したターゲットグループのターゲットとして登録されます。

--health-check-grace-period オプションは、Amazon ECS サービススケジューラが、タスクが最初に開始された後で異常な Elastic Load Balancing ターゲットのヘルスチェックを無視する期間 (秒単位) を指定します。これが有効であるのは、ロードバランサーを使用するようにサービスが設定されている場合のみです。タスクで、ELB ヘルスチェックを開始して応答するまでに時間がかかる場合は、ヘルスチェックの猶予期間として最大 1,800 秒まで指定できます。この間は、ECS サービススケジューラは Elastic Load Balancing ヘルスチェックのステータスを無視します。この猶予期間により、Amazon ECS サービススケジューラがタスクを異常とマークして時間より前に停止することがなくなります。

サービス検出 を使用する

Amazon ECS サービスはオプションで Amazon ECS サービス検出 を使用するように設定できます。サービス検出 は Amazon Route 53 自動命名 API アクションを使用して、サービスのタスクの DNS エントリを管理し、VPC 内で検出できるようにします。詳細については、「チュートリアル : Amazon ECS CLI を使用して サービス検出 を使用する Amazon ECS サービスを作成する」を参照してください。

リソースのタグ付け

Amazon ECS CLI では AWS リソースにリソースタグの形式でメタデータを追加できます。各タグはキーとオプションの値で構成されます。リソースタグはコスト配分、オートメーション、アクセスコントロールに使用できます。詳細については、「AWS タグ付け戦略」を参照してください。

ecs-cli compose service create コマンドを使用する場合、--tags フラグを使用して、タスク定義およびサービスにメタデータタグを追加することができます。タグは、リソースが作成されるときにサービスおよびタスク定義に追加されます。タグは、タスク定義からサービスにより作成されたタスクに伝搬されます。新しい Amazon リソースネーム (ARN) およびリソース識別子 (ID) フォーマットを使用することを選択した場合、--disable-ecs-managed-tags フラグを使用して明確に無効にしない限りは Amazon ECS マネージドタグがデフォルトで有効になります。詳細については、「請求用のリソースにタグを付ける」を参照してください。