如何在Python AWS boto API中获取EC2实例ID的容器实例列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python AWS boto API中获取EC2实例ID的容器实例列表相关的知识,希望对你有一定的参考价值。

我一直在Python的boto3客户端(http://boto3.readthedocs.io/en/latest/reference/services/ec2.html)中搜索EC2 api。给定EC2实例ID,我希望能够找到在属于特定ECS集群ID的EC2实例上运行的所有容器实例。我似乎无法找到任何执行此操作的API调用。我怎样才能获得这些信息?

我想要这个信息,因为给定EC2实例ID我想知道所有容器和在这些容器上运行的所有任务。

答案

我认为您可以使用ECS API执行此操作。例如。

import boto3

CLUSTER = 'YOUR_CLUSTER_ID'
EC2 = 'YOUR_EC2_ID'

ecs = boto3.client('ecs')

ci_list_response = ecs.list_container_instances(
    cluster=CLUSTER
)

# Describe those ARNs
ci_descriptions_response = ecs.describe_container_instances(
    cluster=CLUSTER,
    containerInstances=ci_list_response['containerInstanceArns']
)

# Look for a container instance with the given EC2 instance ID
# Then for want of something better to do, print all the details
for ci in ci_descriptions_response['containerInstances']:
    if ci['ec2InstanceId'] == EC2:
        print(ci)

编辑:在我看来,您可能对该实例上正在运行的任务更感兴趣,您也可以获得该任务。

import boto3

CLUSTER = 'YOUR_CLUSTER_ID'
EC2 = 'YOUR_EC2_ID'

ecs = boto3.client('ecs')

ci_list_response = ecs.list_container_instances(
    cluster=CLUSTER
)

# Describe those ARNs
ci_descriptions_response = ecs.describe_container_instances(
    cluster=CLUSTER,
    containerInstances=ci_list_response['containerInstanceArns']
)

# Look for a container instance with the given EC2 instance ID
# Then for want of something better to do, print all the details
for ci in ci_descriptions_response['containerInstances']:
    if ci['ec2InstanceId'] == EC2:

        # List tasks on this container instance
        t_list_response = ecs.list_tasks(
            cluster=CLUSTER,
            containerInstance=ci['containerInstanceArn']
        )

        # Describe tasks
        t_descriptions_response = ecs.describe_tasks(
            cluster=CLUSTER,
            tasks=t_list_response['taskArns']
        )

        print(t_descriptions_response)

以上是关于如何在Python AWS boto API中获取EC2实例ID的容器实例列表的主要内容,如果未能解决你的问题,请参考以下文章

AWS:如何使用 Boto3 从实例创建公共 AMI?

使用boto3 Python SDK返回AWS EC2可用性区域属性

使用 boto3 和 python 将 AWS EC2 详细信息导出到 xlsx/csv

在单个AWS Lambda中使用两个python函数boto3

Python使用 boto 调用 S3 对象存储API

AWS Quicksight 创建仪表板 BOTO3 API 调用错误