Pythonの「boto」モジュールを使用して、あるインスタンスから別のインスタンスにボリュームをコピーしようとしています。そのプロセスの一部は、インスタンスに接続されているボリュームを識別することです。この問題に取り組むにはいくつかの方法があります。たとえば、リスト内包表記を使用できます。
from boto.ec2 import connect_to_region
conn = connect_to_region('us-east-1')
all_volumes = conn.get_all_volumes()
instance_volumes = [v for v in all_volumes if v.attach_data.instance_id = "<instanceID>"]
これは機能し、私の目的には十分に機能します。それでも、同じ結果を得るためにget_all_volumes()
の組み込みフィルタリングを使用する方法があるかどうか興味があります。たとえば、「Name」タグが特定のパターンに一致するインスタンスを検索する場合、次のように実行できます。
filters = {'tag:Name': '<name>'}
reservations = self.conn.get_all_instances(filters=filters)
instances = [i for r in reservations for i in r.instances]
get_all_volumes()
同様のフィルターパラメーターがありますが、動作させることができませんboto.ec2.volume.Volume.attach_data.instance_id
。明らかな何かが欠けているのですか、それともボリュームのinstance_idによるフィルタリングが不可能ですか?