boto3を使ってAMIを保存する。必要情報はアクセスキーなど基本的なものと取りたいInstanceId。
client = boto3.client('ec2', aws_access_key_id=parsed['access_key'], aws_secret_access_key=parsed['secret_key'], region_name=parsed['region'] ) image_response = client.create_image( InstanceId='i-hogehogehoge', Name='hogehogeName', Description='hogehogeDescription', NoReboot=True )
こんな感じで簡単に取るように指示を出せる。 NoRebootで再起動させない事もできる。ただ、そうなるとAWS非推奨でデータの整合性は担保できないため注意。 まぁ、それでも再起動させたくないケースは多いハズ。 また、ブラウザ経由と同じくNameは重複できないので、時間やら乱数入れるなりしてかぶらないように。
取り終わったあとに何かさせたい場合には
waiter = client.get_waiter('image_available') waiter.wait()
などで待たせたあとに何か処理をかけば良い。ただ、AMIの作成完了までの時間があまりに長いもの(1時間以上?未確認)だと、 エラーを出してしまうらしいので注意。 その場合はwaiterなどの処理方法を変えてあげてね。