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

ecs-cli compose service up

構成ファイルから Amazon ECS サービスを作成し (まだない場合)、そのタスクの 1 つのインスタンスをクラスターで実行します (createstart コマンドの組み合わせ)。このコマンドはサービスの必要数を 1 に更新します。

構文

ecs-cli compose service up [--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] [--health-check-grace-period integer] [--timeout value] [--launch-type launch_type] [--create-log-groups] [--force-deployment] [--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] [--update-service-discovery] [--help]

オプション

名前 説明

--deployment-max-percent

Specifies the upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. For more information, see maximumPercent.

Default value: 200

Required: No

--deployment-min-healthy-percent

Specifies the lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. For more information, see minimumHealthyPercent.

Default value: 100

Required: No

--target-group-arn

Specifies the full Amazon Resource Name (ARN) of a previously configured Elastic Load Balancing target group to associate with your service.

Required: No

--container-name

Specifies the container name (as it appears in a container definition). This parameter is required if a load balancer or target group is specified.

Required: No, unless a load balancer or target group is specified.

--container-port

Specifies the port on the container to associate with the load balancer. This port must correspond to a containerPort in the service's task definition. This parameter is required if a load balancer or target group is specified.

Required: No, unless a load balancer or target group is specified.

--load-balancer-name

Specifies the name of a previously configured Elastic Load Balancing load balancer to associate with your service.

Required: No

--role

Specifies the name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your load balancer or target group on your behalf. This parameter is required if you are using a load balancer or target group with your service. If you specify the role parameter, you must also specify a load balancer name or target group ARN, along with a container name and container port.

Required: No, unless a load balancer or target group is specified.

--health-check-grace-period

Specifies the period of time, in seconds, that the Amazon ECS service scheduler should ignore unhealthy Elastic Load Balancing target health checks after a task has first started.

Required: No

--create-log-groups

Creates the CloudWatch log groups specified in your compose files.

Required: No

--enable-service-discovery

Specifies whether to enable service discovery for this service.

Required: No

--vpc

Specifies the VPC that will be attached to the private DNS namespace for サービス検出. This parameter is required if --private-dns-namespace is specified.

Required: No

--private-dns-namespace

Specifies the name of the private DNS namespace to use with サービス検出. The ECS CLI automatically creates the namespace if it does not exist. For example, if the namespace is corp, then a service named foo is reachable via DNS at foo.corp. If this parameter is used, you must also specify a VPC using the --vpc parameter.

Required: No

--private-dns-namespace-id

Specifies the ID of an existing private DNS namespace to use with サービス検出. If this parameter is used, you cannot specify either --private-dns-namespace or --vpc.

Required: No

--public-dns-namespace

Specifies the name of the public DNS namespace to use with サービス検出. For example, if the namespace is corp, then a service named foo is reachable via DNS at foo.corp.

Required: No

--public-dns-namespace-id

Specifies the ID of an existing public DNS namespace to use with サービス検出. If this parameter is used, you cannot specify a --public-dns-namespace.

Required: No

--sd-container-name

Specifies the name of the container, which is referred to as a service in your Docker compose file. For more information, see Service configuration reference. This parameter is required if you are using SRV records.

Required: No, unless SRV DNS records are being used.

--sd-container-port

Specifies the port on the container that will be used for サービス検出. This parameter is required if you are using SRV records.

Required: No, unless SRV DNS records are being used.

--dns-ttl

Specifies the amount of time, in seconds, that you want DNS resolvers to cache the settings for the DNS records used for サービス検出.

Default value: 60

Required: No

--dns-type

Specifies the type of DNS record used for サービス検出. Accepted values are A or SRV. If your task uses either the bridge or host network modes, then SRV records are required. If your task uses the awsvpc network mode then A records are the default.

Required: No

--healthcheck-custom-config-failure-threshold

Specifies the number of 30-second intervals that you want the サービス検出 service to wait after receiving an UpdateInstanceCustomHealthStatus request before it changes the health status.

Default value: 1

Required: No

--update-service-discovery

If specified, this allows the サービス検出 service settings for --dns-ttl and --healthcheck-custom-config-failure-threshold to be updated.

Required: No

--region, -r region

Specifies the AWS Region to use. Defaults to the cluster configured using the configure command.

Type: String

Required: No

--cluster-config cluster_config_name

Specifies the name of the Amazon ECS cluster configuration to use. Defaults to the cluster configuration set as the default.

Type: String

Required: No

--ecs-profile ecs_profile

Specifies the name of the Amazon ECS profile configuration to use. Defaults to the profile configured using the configure profile command.

Type: String

Required: No

--aws-profile aws_profile

Specifies the AWS profile to use. Enables you to use the AWS credentials from an existing named profile in ~/.aws/credentials.

Type: String

Required: No

--cluster, -c cluster_name

Specifies the Amazon ECS cluster name to use. Defaults to the cluster configured using the configure command.

Type: String

Required: No

--help, -h

Shows the help text for the specified command.

Required: No

ロードバランサーの使用

オプションで、ロードバランサーの背後でサービスを実行できます。ロードバランサーは、サービスに関連付けられたタスク間でトラフィックを分散させます。詳細については、「サービスロードバランシング」を参照してください。サービスを作成した後、サービス定義で指定されているロードバランサー名、ターゲットグループ 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 サービスを作成する」を参照してください。

例 1

この例では、hello-world.yml 構成ファイルからプロジェクト名 hello-world で Amazon ECS サービスを作成します。

ecs-cli compose --project-name hello-world --file hello-world.yml service up

出力:

INFO[0000] Using ECS task definition TaskDefinition="ecscompose-hello-world:7" INFO[0000] Created an ECS service service=ecscompose-service-hello-world taskDefinition="ecscompose-hello-world:7" INFO[0000] Updated ECS service successfully desiredCount=1 serviceName=ecscompose-service-hello-world INFO[0015] (service ecscompose-service-hello-world) has started 1 tasks: (task 682dc22f-8bfa-4c28-b6f8-3a916bd8f86a). timestamp=2017-08-18 21:16:00 +0000 UTC INFO[0060] Service status desiredCount=1 runningCount=1 serviceName=ecscompose-service-hello-world INFO[0060] ECS Service has reached a stable state desiredCount=1 runningCount=1 serviceName=ecscompose-service-hello-world

例 2

この例では nginx-compose.yml 構成ファイルからサービスを作成し、既存の Application Load Balancer を使用してそれを設定します。

ecs-cli compose -f nginx-compose.yml service up --target-group-arn arn:aws:elasticloadbalancing:us-east-1:aws_account_id:targetgroup/ecs-cli-alb/9856106fcc5d4be8 --container-name nginx --container-port 80 --role ecsServiceRole

例 3

この例では、nginx-compose.yml 構成ファイルからサービスを作成し、ヘルスチェックの猶予期間を 25 秒に設定した既存の Application Load Balancer を使用するように設定します。

ecs-cli compose -f nginx-compose.yml service up --target-group-arn arn:aws:elasticloadbalancing:us-east-1:aws_account_id:targetgroup/ecs-cli-alb/9856106fcc5d4be8 --container-name nginx --container-port 80 --role ecsServiceRole --health-check-grace-period 25