首页 > 解决方案 > AWS describe_containers 直接查询时返回空

问题描述

我正在使用 boto3 sdk 查询 AWS ECS API,以完整描述 Fargate 集群。

我首先获取集群的服务,然后获取每个服务的任务。

任务包含一个 key containers,其中包含一个容器列表。它们每个都有一个 ARN,格式如下:arn:aws:ecs:eu-west-2:822276179620:container/16328278-00a3-334f-b60c-5e966badd794

然后,我尝试将这些 ARN 传递给 boto3 describe_container_instances,传递正确的集群名称和上面提到的 containerARN 列表。它出错,声称 containerIdentiifers 无效。通过一些实验,我发现如果我拆分 ARN 的一部分container/并使用它,它不再出错,但是,它声称所有的 containerInstances 都是'MISSING'(在'failures'键下)。

有趣的是,如果我尝试list_container_instances直接在集群上运行,它会返回一个空列表(200 响应,没有错误)。

综上所述,API 似乎不愿意让我直接看到容器。我只能将它们视为任务对象的成员(其中不包含我需要的所有关于它们的信息)。

标签: amazon-web-servicesboto3amazon-ecs

解决方案


describe_container_instances返回有关容器实例的信息:

描述 Amazon Elastic Container Service容器实例。返回有关请求的每个容器实例上已注册资源和剩余资源的元数据。

但是,您正在运行Fargate集群,因此您无权访问这些实例。它们由 AWS 管理。

如果您运行的是EC2 类型的集群,而不是 Fargate,您将能够访问容器实例:

EC2 启动类型:EC2 启动类型允许您在您管理的 Amazon EC2实例集群上运行容器化应用程序。


推荐阅读