ECSのEC2タイプとFargateタイプでCloudFormationテンプレートの記述に制約があり手間取ることが多かったので、両者の記述の比較メモ。
ECSクラスタ
Type: AWS::ECS::Cluster
Properties:
CapacityProviders:
- String
ClusterName: String
ClusterSettings:
- ClusterSettings
Configuration:
ClusterConfiguration
DefaultCapacityProviderStrategy:
- CapacityProviderStrategyItem
Tags:
- Tag
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html
|
Fargate |
EC2 |
CapacityProviders |
オンデマンドインスタンス、スポットインスタンスの利用有無 |
利用するAuto Scaingグループに応じた自由なEC2インスタンススペック選択、インスタンス台数やウォームアップ |
ECSサービス
Type: AWS::ECS::Service
Properties:
CapacityProviderStrategy:
- CapacityProviderStrategyItem
Cluster: String
DeploymentConfiguration:
DeploymentConfiguration
DeploymentController:
DeploymentController
DesiredCount: Integer
EnableECSManagedTags: Boolean
EnableExecuteCommand: Boolean
HealthCheckGracePeriodSeconds: Integer
LaunchType: String
LoadBalancers:
- LoadBalancer
NetworkConfiguration:
NetworkConfiguration
PlacementConstraints:
- PlacementConstraint
PlacementStrategies:
- PlacementStrategy
PlatformVersion: String
PropagateTags: String
Role: String
SchedulingStrategy: String
ServiceName: String
ServiceRegistries:
- ServiceRegistry
Tags:
- Tag
TaskDefinition: String
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html
|
Fargate |
EC2 |
LaunchType |
FARGATE |
EC2 |
LoadBalancers |
ALBもしくはNLBの指定のみで、CLBは指定できない |
任意 |
NetworkConfiguration |
必須 |
任意 |
PlacementConstraints |
未対応 |
任意。Cluster query languageにより、タスク配置先の制御が可能 |
PlacementStrategies |
未対応 |
任意。Cluster query languageにより、タスク配置先の制御が可能 |
SchedulingStrategy |
DAEMON 未対応なのでREPLICA のみ |
任意 |
ECSタスク定義
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- ContainerDefinition
Cpu: String
EphemeralStorage:
EphemeralStorage
ExecutionRoleArn: String
Family: String
InferenceAccelerators:
- InferenceAccelerator
IpcMode: String
Memory: String
NetworkMode: String
PidMode: String
PlacementConstraints:
- TaskDefinitionPlacementConstraint
ProxyConfiguration:
ProxyConfiguration
RequiresCompatibilities:
- String
RuntimePlatform:
RuntimePlatform
Tags:
- Tag
TaskRoleArn: String
Volumes:
- Volume
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html
|
Fargate |
EC2 |
ContainerDefinition |
後述 |
後述 |
Cpu |
必須。後述のCPU/メモリ表を参照 |
任意 |
EphemeralStorage |
任意。タスクごとのエフェメラルストレージを制御 |
未対応 |
InferenceAccelerators |
未対応 |
Amazon Elastic Inferenceの利用が可能 |
IpcMode |
未対応 |
任意 |
Memory |
必須。後述のCPU/メモリ表を参照 |
任意 |
NetworkMode |
awsvpc のみ |
任意 |
PidMode |
未対応 |
任意 |
PlacementConstraints |
未対応 |
任意。Cluster query languageにより、タスク配置先の制御が可能 |
ProxyConfiguration |
プラットフォームバージョン1.3.0 以降 |
任意 |
RequiresCompatibilities |
FARGATE が必要 |
EC2 が必要 |
TaskRoleArn |
ECS Exceを利用する場合、ここで指定するロールでIAMの調整が必要 |
任意 |
Volumes |
DockerVolumeConfiguration によるDockerボリューム利用は未対応。Host.SourcePath によるDockerコンテナホスト側のパスを指定してのバインドマウントは未対応 |
EC2 が必要 |
CPU/メモリ表
CPU |
メモリ |
256 (.25 vCPU) |
512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) |
512 (.5 vCPU) |
1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) |
1024 (1 vCPU) |
2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) |
2048 (2 vCPU) |
4096 (4 GB) と 16384 (16 GB) の間;増分1024 (1 GB) |
4096 (4 vCPU) |
8192 (8 GB) と 30720 (30 GB) の間;増分1024 (1 GB) |
ContainerDefinition
Command:
- String
Cpu: Integer
DependsOn:
- ContainerDependency
DisableNetworking: Boolean
DnsSearchDomains:
- String
DnsServers:
- String
DockerLabels:
Key : Value
DockerSecurityOptions:
- String
EntryPoint:
- String
Environment:
- KeyValuePair
EnvironmentFiles:
- EnvironmentFile
Essential: Boolean
ExtraHosts:
- HostEntry
FirelensConfiguration:
FirelensConfiguration
HealthCheck:
HealthCheck
Hostname: String
Image: String
Interactive: Boolean
Links:
- String
LinuxParameters:
LinuxParameters
LogConfiguration:
LogConfiguration
Memory: Integer
MemoryReservation: Integer
MountPoints:
- MountPoint
Name: String
PortMappings:
- PortMapping
Privileged: Boolean
PseudoTerminal: Boolean
ReadonlyRootFilesystem: Boolean
RepositoryCredentials:
RepositoryCredentials
ResourceRequirements:
- ResourceRequirement
Secrets:
- Secret
StartTimeout: Integer
StopTimeout: Integer
SystemControls:
- SystemControl
Ulimits:
- Ulimit
User: String
VolumesFrom:
- VolumeFrom
WorkingDirectory: String
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html
|
Fargate |
EC2 |
DisableNetworking |
未対応 |
任意 |
DockerSecurityOptions |
未対応 |
任意 |
LinuxParameters |
Capabilities はプラットフォームバージョン1.4.0 未満ならDropのサポートのみ、以降なら加えてSYS_PTRACE のAddをサポート。
Devices 、MaxSwap 、SharedMemorySize 、Swappiness 、Tmpfs 未対応。 |
任意 |
LogConfiguration |
LogDriver はawslogs 、splunk 、awsfirelens のみサポート |
任意 |
Privileged |
未対応 |
任意 |
SystemControls |
未対応 |
任意。TCP関連などのカーネルパラメータ調整が可能 |