仅持有ECS Service的ARN时如何调用describe-service查询服务信息
解析ARN是完全可靠的首选方案,目前没有比这更简便的官方原生实现方案。
方案1:解析ARN(最优选择)
- AWS官方公开的ECS服务ARN格式长期稳定,结构固定为:
arn:aws:ecs:<区域>:<账户ID>:service/<集群名称>/<服务名称>,不存在无通知变更的可能,完全可以放心解析。 - 解析步骤非常简单:
- 对ARN按冒号
:分割,取最后一段,得到service/<集群名称>/<服务名称> - 对上述字符串按斜杠
/分割,取第2个元素就是集群名称
- 对ARN按冒号
- 解析完成后直接调用接口即可,示例命令:
aws ecs describe-services --cluster 解析得到的集群名 --services 你的服务完整ARN
补充:不想手动解析的替代方案
如果你确实不想自己做ARN解析,可以用Shell内置能力直接提取集群名,一行命令就能完成查询,不需要手动处理字符串:
aws ecs describe-services --cluster $(echo '你的服务ARN' | awk -F '[:/]' '{print $7}') --services 你的服务ARN
不推荐遍历集群方案的原因
- 性能低下:账户内集群数量多的话,需要发起数十次甚至上百次API请求,耗时很长
- 权限受限:如果当前调用身份没有所有ECS集群的访问权限,遍历会直接失败,无法查到目标服务
- 容易触发API速率限制,调用失败概率更高
注:你提到的
aws ecs descibe-service命令存在两处错误,正确命令为aws ecs describe-services,注意拼写补全字母r,且service为复数形式。
内容的提问来源于stack exchange,提问作者Aled Lewis
相关产品推荐
相关产品推荐

