[英]How to get arn of my ec2 instance using boto3
我想要我所有 ec2 实例的 arn。 describe_instances() 不会给出实例。 是否有任何其他方法或某种方式也可以列出所有的arns。 我需要将它们存储在数据库中,而且我现在正在处理示例实例,这最终也需要为多个帐户工作。 因此,一个贯穿始终的解决方案将很有帮助。
您可以自己重新创建它:
arn:aws:ec2:<REGION>:<ACCOUNT_ID>:instance/<instance-id>
为此,我认为您甚至可以使用 * as 和 <ACCOUNT_ID>,它会起作用。
有关更多信息,您可以看到这个问题
实际上 instances['Reservations'][0]['Instances'] 可能没有所有实例。 实例按安全组分组在一起。不同的安全组意味着会有许多列表元素。 要获取该区域中的每个实例,您需要使用以下代码。
注意:['Reservations'][0]['Instances'] 没有列出所有实例,它只提供按第一个安全组分组的实例。 如果有很多组,您将不会获得所有实例。
import boto3
region = 'ap-south-1'
ec2 = boto3.client('ec2', region_name=region)
def list_instances():
instance_ids = []
response = ec2.describe_instances(Filters=[{'Name': 'instance-type', 'Values': ["t2.micro", "t3.micro"]}])
instances_full_details = response['Reservations']
for instance_detail in instances_full_details:
group_instances = instance_detail['Instances']
for instance in group_instances:
instance_id = instance['InstanceId']
instance_ids.append(instance_id)
return instance_ids
instance_ids = list_instances()
print(instance_ids)
您可以自己构建它。 简而言之就是:
sts = boto3.client('sts')
region = boto3.Session().region_name
instance_id='id-3324234'
account_id = sts.get_caller_identity()['Account']
instance_arn=f"arn:aws:ec2:{region}:{account_id}:instance/{instance_id}"
print(instance_arn)
但要学究起来并获得 AWS分区,它将是:
def get_partition_for_region(session):
# based on https://github.com/boto/botocore/pull/1715
region_name = session.region_name
partitions = session.get_available_partitions()
for partition in partitions:
regions = session.get_available_regions('stepfunctions', partition)
if region_name in regions:
return partition
# use the default aws partition in case nothing is found
return 'aws'
partition = get_partition_for_region(boto3.Session())
sts = boto3.client('sts')
region = boto3.Session().region_name
instance_id='id-3324234'
account_id = sts.get_caller_identity()['Account']
instance_arn=f"arn:{partition}:ec2:{region}:{account_id}:instance/{instance_id}"
print(instance_arn)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.