メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::ECS::Service

AWS::ECS::Service リソースは、必要な数のタスクと関連付けられたロードバランサーを実行および維持する Amazon Elastic Container Service (Amazon ECS) サービスを作成します。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

Copy
{ "Type" : "AWS::ECS::Service", "Properties" : { "Cluster" : String, "DeploymentConfiguration" : DeploymentConfiguration, "DesiredCount" : Integer, "LoadBalancers" : [ Load Balancer Objects, ... ], "PlacementConstraints" : [ PlacementConstraints, ... ], "Role" : String, "PlacementStrategies" : [ PlacementStrategies, ... ], "ServiceName" : String, "TaskDefinition" : String } }

YAML

Copy
Type: "AWS::ECS::Service" Properties: Cluster: String DeploymentConfiguration: DeploymentConfiguration DesiredCount: Integer LoadBalancers: - Load Balancer Objects, ... PlacementConstraints: - PlacementConstraints, ... PlacementStrategies: - PlacementStrategies, ... Role: String ServiceName: String TaskDefinition: String

プロパティ

注記

Amazon ECS クラスターにコンテナインスタンスを作成する際に Auto Scaling または Amazon Elastic Compute Cloud (Amazon EC2) を使用する場合には、この Amazon ECS サービスリソースが Auto Scaling グループまたは Amazon EC2 インスタンスとの依存関係を持っている必要があります。 これにより、コンテナインスタンスが有効になり、AWS CloudFormation が Amazon ECS サービスを作成する前に、Amazon ECS クラスターに関連付けられます。

Cluster

Amazon ECS サービスを実行するクラスターの名前または Amazon リソースネーム (ARN)。クラスターを指定しない場合、Amazon ECS によりデフォルトクラスターが使用されます。

Required: No

Type: String

更新に伴う要件: 置換

DeploymentConfiguration

デプロイメント中に実行するタスク数を設定します。

Required: No

Type: Amazon Elastic Container Service Service DeploymentConfiguration

更新に伴う要件: 中断はありません。

PlacementConstraints

サービス内のタスクの配置制約。

Required: No

Type: Amazon Elastic Container Service Service PlacementConstraint

更新に伴う要件: 置換

PlacementStrategies

サービスのタスクを配置する方法を決定する配置戦略。

Required: No

Type: Amazon Elastic Container Service Service PlacementStrategies

更新に伴う要件: 置換

DesiredCount

クラスターで実行する同時タスクの数。TaskDefinition プロパティを使用してタスクを指定します。

Required: Conditional。Amazon ECS サービスの作成時にのみ必要です。

Type: Integer

更新に伴う要件: 中断はありません。

LoadBalancers

クラスターに関連付るロードバランサーオブジェクトのリスト。Role プロパティを指定した場合は、LoadBalancers も指定する必要があります。サービスあたりに指定できるロードバランサーの数については、Amazon Elastic Container Service Developer Guide の「サービスロードバランシング」を参照してください。

Required: Conditional

Amazon Elastic Container Service Service LoadBalancersType: リスト

更新に伴う要件: 置換

Role

Amazon ECS コンテナエージェントがロードバランサーを呼び出すことができるようにする AWS Identity and Access Management (IAM) ロールの名前と ARN。

注記

場合によっては、サービスロールのポリシーの依存性を追加する必要があります。詳細については、IAM ロールのポリシー (「DependsOn 属性」) を参照してください。

Required: Conditional。LoadBalancers プロパティを指定した場合にのみ必要です。

Type: String

更新に伴う要件: 置換

ServiceName

サービスの名前。名前は 255 文字 (大文字と小文字)、数字、ハイフン、アンダースコアに制限されています。サービス名は同じクラスター内で一意になるようにしてください。ただし、リージョン内のクラスター間や複数のリージョンにまたがるクラスター間では、同様の名前のサービスがあっても構いません。

Required: No

Type: String

更新に伴う要件: 置換

TaskDefinition

クラスターで実行されるタスク定義の ARN (リビジョン番号含む)。arn:aws:ecs:us-east-1:123456789012:task-definition/mytask:3 など。:latest は曖昧であるため、リビジョンの指定には使用できません。たとえば、AWS CloudFormation で更新をロールバックする必要がある場合に、どのリビジョンにロールバックすればいいかわかりません。

Required: Yes

Type: String

更新に伴う要件: 一時的な中断。

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref により ARN が返されます。

次のサンプルでは、Ref 関数が MyECSService サービスの ARN (arn:aws:ecs:us-west-2:123456789012:service/sample-webapp など) を返します。

Copy
{ "Ref": "MyECSService" }

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

Name

Amazon ECS サービスの名前 (sample-webapp など)。

Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

ベーシック Amazon ECS サービスを定義します。

次の例では、同じテンプレートの別の場所で宣言されたクラスターとタスク定義を使用する Amazon ECS サービスを定義します。

JSON

Copy
"WebApp": { "Type": "AWS::ECS::Service", "Properties" : { "Cluster": { "Ref": "cluster" }, "DesiredCount": { "Ref": "desiredcount" }, "TaskDefinition" : { "Ref": "taskdefinition" } } }

YAML

Copy
WebApp: Type: "AWS::ECS::Service" Properties: Cluster: Ref: "cluster" DesiredCount: Ref: "desiredcount" TaskDefinition: Ref: "taskdefinition"

Application Load Balancer とサービスの関連付け

次の例では、AWS::ElasticLoadBalancingV2::TargetGroup リソースを参照して Application Load Balancer と Amazon ECS サービスを関連付けます。

注記

Amazon ECS サービスでは、アプリケーションロードバランサー リスナールールと アプリケーションロードバランサー リスナーに明示的に依存する必要があります。これにより、リスナーの準備が整う前にサービスが開始されなくなります。

JSON

Copy
"service" : { "Type" : "AWS::ECS::Service", "DependsOn": ["Listener"], "Properties" : { "Role" : { "Ref" : "ECSServiceRole" }, "TaskDefinition" : { "Ref" : "taskdefinition" }, "DesiredCount" : "1", "LoadBalancers" : [{ "TargetGroupArn" : { "Ref" : "TargetGroup" }, "ContainerPort" : "80", "ContainerName" : "sample-app" }], "Cluster" : { "Ref" : "ECSCluster" } } }

YAML

Copy
service: Type: AWS::ECS::Service DependsOn: - Listener Properties: Role: Ref: ECSServiceRole TaskDefinition: Ref: taskdefinition DesiredCount: 1 LoadBalancers: - TargetGroupArn: Ref: TargetGroup ContainerPort: 80 ContainerName: sample-app Cluster: Ref: ECSCluster

詳細

このページの内容: