我想获得实例ID ,这会创建ami。我正在使用以下脚本 -
sess = Boto3Connecton.get_boto3_session(arn)
elb_conn = sess.client(service_name='ec2', region_name=region)
images = conn.describe_images(Owners=['self'])["Images"]
for image in images:
instance_id=image["InstanceId"]
print "the instance which creates this ami is {0}".format(instance_id)
但是上面的脚本会抛出一条异常消息“No InstanceId key found”,因为当前函数没有提供有关创建此ami的实例的信息。
有没有办法确定使用amazon-boto3创建ami的instance-id?
答案 0 :(得分:4)
没有实例ID,即使有实例ID,它会有什么用处? AMI是在过去的某个时间从运行或停止的EC2实例创建的,但该实例的ID并不重要。
您可以看到图像here可用的特定属性,例如architecture和creationDate。
可能值得一提的是:你到底想要做什么?为什么你认为你需要一个实例ID?
答案 1 :(得分:1)
instances = ec2.instances.filter(
Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
for instance in instances:
print(instance.id, instance.instance_type)
答案 2 :(得分:0)
您可以查找您的IAM角色可以描述的恰好与您的本地主机名匹配的实例:
def get_ec2_instance_id():
import socket
hostname = socket.gethostname()
ec2_client = boto3.client('ec2', region_name=REGION_NAME)
for reservation in ec2_client.describe_instances()['Reservations']:
for instance in reservation['Instances']:
if instance['PrivateDnsName'].startswith(hostname):
return instance['InstanceId']