インスタンスBのインターフェース0が持っているEIPを、インスタンスAへ割り振る手順。
AとBのインスタンスIDのみ分かってる場合とするとこんなかんじ。
A = client.describe_instances( Filters=[{'Name':'instance-id','Values':['i-AAAAAAAAAAAAAAAA']}] ) B = client.describe_instances( Filters=[{'Name':'instance-id','Values':['i-BBBBBBBBBBBBBBBB']}] ) AllocationIds = client.describe_addresses( PublicIps=[B['Reservations'][0]['Instances'][0]['NetworkInterfaces'][0]['Association']['PublicIp']] ) client.associate_address( AllocationId=AllocationIds['Addresses'][0]['AllocationId'], NetworkInterfaceId=A['Reservations'][0]['Instances'][0]['NetworkInterfaces'][0]['NetworkInterfaceId'], AllowReassociation=True )
AとBのインスタンス情報を持ってきて、Bのアドレスから、AllocationIdを取ってくる。
AllocationIdがわかれば、associate_addressでAへEIPを関連付けしてあげられる。
本当はBのEIPを関連付けを外して、Aに割り振る流れになるんだけれども、AllowReassociationをTrueにしてあげることで、
EIPが誰かに振られてても強引に新しいインスタンスにあげられる。
インターフェースがいくつもあって0番目じゃない場合には振りたいのを修正する必要がある。
というかいくつもインターフェースがある場合にはもっと考えて作ってね。