2

ami を作成する インスタンス IDを取得したかったのですが、以下のスクリプトを使用しています。

    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)

しかし、上記のスクリプトは、現在の関数がこの ami を作成するインスタンスに関する情報を提供しないため、「InstanceId キーが見つかりません」という例外メッセージをスローします。

amazon-boto3 を使用してその ami を作成するインスタンス ID を特定する方法はありますか?

4

3 に答える 3

4

インスタンス ID はありません。あったとしても、何の役に立つのでしょうか。AMI は、実行中または停止した EC2 インスタンスから過去に作成されましたが、そのインスタンスの ID は重要ではありません。

ここで、アーキテクチャーや creationDate など、イメージで使用できる特定のプロパティを確認できます。

ここで実際に何をしようとしているのですか? なぜインスタンス ID が必要だと思いますか?

于 2015-07-14T19:05:34.967 に答える
1
instances = ec2.instances.filter(
    Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
for instance in instances:
    print(instance.id, instance.instance_type)

ここのboto3ドキュメントにあります

于 2016-03-11T09:55:58.627 に答える
1

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']
于 2016-07-06T22:36:02.827 に答える