インスタンスを安全にシャットダウンするように Amazon ECS キャパシティープロバイダーを設定する
Amazon ECS コンソールと AWS CLI を使用して Auto Scaling グループのキャパシティープロバイダーを作成または更新するときに、マネージドインスタンスドレイニングを有効にできます。
注記
キャパシティープロバイダーを作成すると、マネージドインスタンスドレイニングはデフォルトで有効になります。
以下に、AWS CLI を使用してマネージドインスタンスドレイニングを有効にしたキャパシティプロバイダーを作成し、クラスターの既存のキャパシティプロバイダーのマネージドインスタンスドレイニングを有効にする例を示します。
マネージドインスタンスドレイニングを有効にしたキャパシティプロバイダーを作成する
マネージドインスタンスドレイニングを有効にしたキャパシティプロバイダーを作成するには、create-capacity-provider
コマンドを使用します。managedDraining
パラメータを ENABLED
に設定します。
aws ecs create-capacity-provider \ --name capacity-provider \ --auto-scaling-group-provider '{ "autoScalingGroupArn": "asg-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1 }, "managedDraining": "ENABLED", "managedTerminationProtection": "ENABLED", }'
レスポンス:
{ "capacityProvider": { "capacityProviderArn": "capacity-provider-arn", "name": "capacity-provider", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1 }, "managedTerminationProtection": "ENABLED" "managedDraining": "ENABLED" } } }
クラスターの既存のキャパシティプロバイダーに対してマネージドインスタンスドレイニングを有効にします。
update-capacity-provider
コマンドを使用して、クラスターの既存のキャパシティプロバイダーに対してマネージドインスタンスドレイニングを有効にします。現在 managedDraining
が DISABLED
で、updateStatus
が UPDATE_IN_PROGRESS
になっているのがわかります。
aws ecs update-capacity-provider \ --name cp-draining \ --auto-scaling-group-provider '{ "managedDraining": "ENABLED" }
レスポンス:
{ "capacityProvider": { "capacityProviderArn": "cp-draining-arn", "name": "cp-draining", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-draining-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1, "instanceWarmupPeriod": 300 }, "managedTerminationProtection": "DISABLED", "managedDraining": "DISABLED" // before update }, "updateStatus": "UPDATE_IN_PROGRESS", // in progress and need describe again to find out the result "tags": [ ] } }
describe-clusters
コマンドを使用して ATTACHMENTS
を含めます。マネージドインスタンスドレイニングアタッチメントの status
は PRECREATED
で、全体の attachmentsStatus
は UPDATING
です。
aws ecs describe-clusters --clusters cluster-name --include ATTACHMENTS
レスポンス:
{ "clusters": [ { ... "capacityProviders": [ "cp-draining" ], "defaultCapacityProviderStrategy": [], "attachments": [ # new precreated managed draining attachment { "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "type": "managed_draining", "status": "PRECREATED", "details": [ { "name": "capacityProviderName", "value": "cp-draining" }, { "name": "autoScalingLifecycleHookName", "value": "ecs-managed-draining-termination-hook" } ] }, ... ], "attachmentsStatus": "UPDATING" } ], "failures": [] }
更新が終了したら、describe-capacity-providers
を使用します。すると、managedDraining
が ENABLED
になったのがわかります。
aws ecs describe-capacity-providers --capacity-providers cp-draining
レスポンス:
{ "capacityProviders": [ { "capacityProviderArn": "cp-draining-arn", "name": "cp-draining", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-draning-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1, "instanceWarmupPeriod": 300 }, "managedTerminationProtection": "DISABLED", "managedDraining": "ENABLED" // successfully update }, "updateStatus": "UPDATE_COMPLETE", "tags": [] } ] }