在重新启动我的ECS实例之前,我运行以下shell命令来排空它:
INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
aws ecs update-container-instances-state \
--region eu-central-1 \
--cluster mycluster \
--status DRAINING \
--container-instances $INSTANCE_ID
我收到了以下错误:
调用UpdateContainerInstancesState操作时发生错误(InvalidParameterException):instanceId长度小于36。
显然,这是因为它想要ECS containerInstanceId,而不是ec2InstanceId。找出本地机器的containerInstanceId的最佳方法是什么?
到目前为止,我想到的方法是:
- 使用
aws ecs list-container-instances
获取集群中所有容器实例ID - 使用
aws ecs describe-container-instances
获取相应的EC2实例ID - 使用实例元数据 (
http://169.254.169.254/latest/meta-data/instance-id
) 找到本地EC2实例ID - 使用
jq
结合grep
或其他工具进行过滤
这似乎有点复杂。有更简单的方法吗?