Botoを使用してEC2ボックスの1つのAMIを作成していて、そのAMIでさらにボックスを起動したいのですが、run_instances
コマンドがAMIがまだ利用できないことを吠えています。
botoを使用してawsにクエリを実行し、amiの準備ができたことを確認するにはどうすればよいですか?
EC2接続はget_imageへのメソッドをサポートします
ただし、画像にはステータス属性はありません
Botoを使用してEC2ボックスの1つのAMIを作成していて、そのAMIでさらにボックスを起動したいのですが、run_instances
コマンドがAMIがまだ利用できないことを吠えています。
botoを使用してawsにクエリを実行し、amiの準備ができたことを確認するにはどうすればよいですか?
EC2接続はget_imageへのメソッドをサポートします
ただし、画像にはステータス属性はありません
ImageのクイックディレクトリImage.state
は、次のような値で"pending"
私を導きました"available"
「保留中」および「使用可能」に加えて、「失敗」状態もあります。これは、利用可能なAMI状態の完全なセットです。
boto3を使って簡単な関数を書くことができます
def check_ami_exists(ami_id, region):
client = boto3.client('ec2', region_name = region)
response = client.describe_images()
for image in response['Images']:
if ami_id == image['ImageId']:
return True
return False
上記の方法を使用しましたが、理解するのに少し時間がかかりました。Pythonの人ではありませんが、これが私がしたことです。それが誰かを助けることを願っています。
#EC2 Connection
conn = boto.ec2.connect()
image_status = conn.get_all_images(image_ids='ami-XXX')[0]
image_state = image_status.state
print image_state