是否可以从Code Pipeline调用的Lambda函数中获取更新的ECS容器列表?

问题描述 投票:0回答:1

我正在使用Code Pipeline将应用程序部署到ECS,并且我希望在部署之后对所有新容器运行命令。

有一个'invoke'步骤,它允许您将Lambda函数作为管道的一部分运行。这可以用于ssh到容器并运行命令,但是我找不到如何获取lambda函数中的容器列表。理想情况下,它将作为部署步骤中的参数传递。

我遇到的唯一可能的解决方案是ssh进入运行任务的EC2实例,查询容器然后登录到它们并运行命令。对于我确信其他人已经做过的事情,这似乎非常复杂,所以我希望有一些我无法找到的API或其他东西。

aws-lambda amazon-ecs aws-codepipeline
1个回答
0
投票

1.您可以使用boto3库,它可以执行所需的东西来收集有关ECS实例的元数据。

  1. lambda_handler附加的代码示例。你可以使用ec2 describe_instancesdescribe_instance_status的以下方法
  2. boto3 docs

导入boto3

来自ec2 import describe_instances 来自ecs import 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

© www.soinside.com 2019 - 2024. All rights reserved.