【发布时间】:2018-10-17 06:05:28
【问题描述】:
我在重启之前运行以下 shell 命令来耗尽我的 ECS 实例:
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。
显然这是因为它需要与 ec2InstanceId 不同的 ECS containerInstanceId。找出本地机器的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或其他工具进行过滤
这似乎有点复杂。有没有更简单的方法?
【问题讨论】:
-
我相信您应该输入容器实例 ID 而不是 EC2 实例 ID。容器实例 ID 如下所示:1c3be8ed-df30-47b4-8f1e-6e68ebd01f34。我从 AWS API 指南中提取了它:docs.aws.amazon.com/AmazonECS/latest/APIReference/…
-
你说得对。我通过使用 aws ecs list-container-instances,然后使用 aws ecs describe-container-instances 以及一些 grepping 和 awking 解决了这个问题。这么简单的任务似乎有点复杂
标签: amazon-web-services amazon-ec2 aws-cli amazon-ecs