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

AWS::ECS::Service

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

構文

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

JSON

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

YAML

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

プロパティ

プロパティと有効なパラメーターの詳細については、『Amazon Elastic Container Service API Reference』の「CreateService」を参照してください。

注記

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

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

DesiredCount

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

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

Type: Integer

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

LaunchType

サービスを実行する起動タイプ。指定されない場合、デフォルトで EC2 が使用されます。有効な値は、EC2 および FARGATE です。

必須: いいえ

タイプ: 文字列

更新に伴う要件: 置換。

LoadBalancers

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

Required: Conditional

Amazon Elastic Container Service Service LoadBalancersType: リスト

更新に伴う要件: 置換

NetworkConfiguration

サービスのネットワーク構成。awsvpc ネットワークモードを使用して独自の Elastic Network Interface を受け取るタスク定義の場合に必要です。その他のネットワークモードではサポートされていません。詳細については、『Amazon Elastic Container Service Developer Guide』の「タスクネットワーキング」を参照してください。

必須: いいえ

タイプ: Amazon ECS Service NetworkConfiguration

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

PlacementConstraints

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

Required: No

Type: Amazon Elastic Container Service Service PlacementConstraint

更新に伴う要件: 置換

PlacementStrategies

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

Required: No

Type: Amazon Elastic Container Service Service PlacementStrategies

更新に伴う要件: 置換

PlatformVersion

サービスを実行するプラットフォームのバージョン。指定されない場合、デフォルトで最新バージョンが使用されます。

必須: いいえ

タイプ: 文字列

更新に伴う要件: 置換。

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 など) を返します。

{ "Ref": "MyECSService" }

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

Fn::GetAtt

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

Name

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

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

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

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

JSON

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

YAML

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

"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

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

詳細

このページの内容: