我正在使用Code Pipeline将应用程序部署到ECS,并且我希望在部署之后对所有新容器运行命令。
有一个'invoke'步骤,它允许您将Lambda函数作为管道的一部分运行。这可以用于ssh到容器并运行命令,但是我找不到如何获取lambda函数中的容器列表。理想情况下,它将作为部署步骤中的参数传递。
我遇到的唯一可能的解决方案是ssh进入运行任务的EC2实例,查询容器然后登录到它们并运行命令。对于我确信其他人已经做过的事情,这似乎非常复杂,所以我希望有一些我无法找到的API或其他东西。
1.您可以使用boto3库,它可以执行所需的东西来收集有关ECS实例的元数据。
lambda_handler
附加的代码示例。你可以使用ec2
describe_instances
和describe_instance_status
的以下方法导入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