aws-lambda - 是否可以在从代码管道调用的 Lambda 函数中获取更新的 ECS 容器列表?
问题描述
我正在使用代码管道将应用程序部署到 ECS,并且我想在部署所有新容器后对其运行命令。
有一个“调用”步骤,可让您将 Lambda 函数作为管道的一部分运行。这可用于 ssh 进入容器并运行命令,但是我找不到如何在 lambda 函数中获取容器列表。理想情况下,它将作为部署步骤的参数传递。
我遇到的唯一可能的解决方案是通过 ssh 进入运行任务的 EC2 实例,查询容器,然后登录它们并运行命令。这似乎与我确信其他人已经做过的事情有关,所以我希望有一些 API 或我无法找到的东西。
解决方案
1.您可以使用 boto3 库来收集有关 ECS 实例的元数据。
- 附加的代码示例
lambda_handler
。您可以使用以下方法ec2
describe_instances
和describe_instance_status
- boto3 文档
导入 boto3
从 ec2 导入 describe_instances
从 ecs 导入 describe_container_instances
global ECS_CLIENT
if not ECS_CLIENT:
ECS_CLIENT = boto3.client('ecs')
def get_instances():
response = ECS_CLIENT.describe_container_instances('cluster_name')
containerInstances = response.get('containerInstances')
instances = []
for reservation in containerInstances:
reservation_status = reservation.get('status')
instances += reservation_status
return instances
ECS
为错过那一点道歉。在我为 ECS 共享的相同文档中有一个方法 describe_container_instances。ECS
推荐阅读
- javascript - 动画可折叠内部动画可折叠不起作用
- c - 编写程序将输入复制到输出
- go - 使用 neo4j go 驱动程序编译 neo4j 代码的问题
- postgresql - 如何使用 postgresql 检索过去 n 天的结果
- c++ - 如何将这种嵌套的 for 循环转换为 CUDA C++ 进行并行编程?
- url - 如何使用 Google 脚本在 URL 中包含数据
- android - 如何在 MainClass 中显示光标计数(某物)返回
- python-2.7 - 如何使用 Discord.py 重写更改机器人昵称?
- python-3.x - 如何访问散景(图)参数
- javascript - Javascript:从外部设置函数中删除绑定事件处理程序