amazon-web-services - 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 似乎不愿意让我直接看到容器。我只能将它们视为任务对象的成员(其中不包含我需要的所有关于它们的信息)。
解决方案
describe_container_instances返回有关容器实例的信息:
描述 Amazon Elastic Container Service容器实例。返回有关请求的每个容器实例上已注册资源和剩余资源的元数据。
但是,您正在运行Fargate集群,因此您无权访问这些实例。它们由 AWS 管理。
如果您运行的是EC2 类型的集群,而不是 Fargate,您将能够访问容器实例:
EC2 启动类型:EC2 启动类型允许您在您管理的 Amazon EC2实例集群上运行容器化应用程序。
推荐阅读
- ruby-on-rails - Rolify:添加过期日期时间
- entity-framework-core - EF Core 聚合查询
- javascript - 如何在AngularJs中重定向到新路由时显示确认弹出窗口?
- neovim - 仅使用命令更改 Neovim 中的字体大小
- go - 从 k8s 事件处理程序中的对象获取注释
- javascript - 如何使用样式化组件分隔表格中的 Span - React
- c++ - 在 C++ 中通过引用传递变量的地址
- c# - ASP.NET Core MVC 如何序列化对 JSON 的响应?
- django - Django form.is_valid() 为 False,但没有命中 else 语句?
- sql - 更新影响性能的 OR 条件