20

Python の boto ライブラリを使用して、AWS アカウントのインスタンスからタグを取得しようとしています。

このスニペットは正しく機能し、すべてのタグをもたらします:

    tags = e.get_all_tags()
    for tag in tags:
        print tag.name, tag.value

(e は EC2 接続です)

個々のインスタンスからタグをリクエストすると、

    print vm.__dict__['tags']

また

    print vm.tags

空のリストを取得しています (vm は実際にはインスタンス クラスです)。

次のコード:

    vm.__dict__['tags']['Name']

もちろん、結果は次のようになります。

KeyError: 'Name'

私のコードは昨日まで機能していましたが、突然、インスタンスからタグを取得できなくなりました。

AWS API に問題があるかどうか知っている人はいますか?

4

4 に答える 4

4

次のようなことを試してください:

import boto.ec2

conn = boto.ec2.connect_to_region('us-west-2')
# Find a specific instance, returns a list of Reservation objects
reservations = conn.get_all_instances(instance_ids=['i-xxxxxxxx'])
# Find the Instance object inside the reservation
instance = reservations[0].instances[0]
print(instance.tags)

インスタンスに関連付けられているすべてのタグが出力されているはずi-xxxxxxxxです。

于 2013-10-22T16:47:28.507 に答える
1

boto3 の場合、これを行う必要があります。

import boto3
ec2 = boto3.resource('ec2')
vpc = ec2.Vpc('<your vpc id goes here>')
instance_iterator = vpc.instances.all()

for instance in instance_iterator:
    for tag in instance.tags:
        print('Found instance id: ' + instance.id + '\ntag: ' + tag)
于 2016-02-17T18:24:37.833 に答える
0

私のコードのエラーであることが判明しました。タグ「名前」のないインスタンスが 1 つある場合は考慮しませんでした。

タグ「Name」のないインスタンスが 1 つあり、私のコードはすべてのインスタンスからこのタグを取得しようとしていました。

タグ「名前」のないインスタンスでこのコードを実行すると、

vm.__dict__['tags']['Name']

私が得た: KeyError: 'Name'. vm は AWS インスタンスです。実際にこのタグが設定されたインスタンスでは、何の問題もありませんでした。

助けてくれてありがとう、そしてそれが私自身の間違いだったのに質問して申し訳ありません.

于 2013-10-29T14:28:06.433 に答える