Python脚本有没有一种方法可以;承认;它正在哪个EC2实例上运行?
假设我的脚本运行在一个名为Python脚本有没有一种方法可以;承认;它正在哪个EC2实例上运行?,python,python-3.x,amazon-web-services,amazon-ec2,boto3,Python,Python 3.x,Amazon Web Services,Amazon Ec2,Boto3,假设我的脚本运行在一个名为EC2-test1的EC2实例上,它与一个名为S3-bucket-test1的S3 bucket通信,但是当脚本运行在EC2-test2上时,它能够识别它当前运行的EC2实例,并将目录更改为referenceS3-bucket-test2。有办法吗?我知道对于内部路径,您可以使用os.path.dirname(os.path.realpath(_文件__)),但我想知道是否有一种方法可以在Python中对EC2实例名执行类似的操作 使用以下命令获取当前实例名称警告:不包
EC2-test1
的EC2实例上,它与一个名为S3-bucket-test1
的S3 bucket通信,但是当脚本运行在EC2-test2
上时,它能够识别它当前运行的EC2实例,并将目录更改为referenceS3-bucket-test2
。有办法吗?我知道对于内部路径,您可以使用os.path.dirname(os.path.realpath(_文件__))
,但我想知道是否有一种方法可以在Python中对EC2实例名执行类似的操作 使用以下命令获取当前实例名称警告:不包括异常处理
import boto3
import os
def get_inst_name():
# Get Instance ID from EC2 Instance Metadata
inst_id = os.popen("curl -s http://169.254.169.254/latest/meta-data/instance-id").read()
# Get EC2 instance object
ec2 = boto3.resource('ec2')
inst = ec2.Instance(inst_id)
# Obtain tags associated with the EC2 instance object
for tags in inst.tags:
if tags["Key"] == 'Name':
#print tags["Value"]
return tags["Value"]
- 从元数据服务器获取实例id
- 使用实例id查询Boto3资源