tl;dr
インスタンスに EIP を付与して、インスタンスからひっぺがして別のインスタンスに付与するまで。
メモ
EIP 払い出し
- run
ALLOCATION_ID=$(aws \ --region ap-northeast-1 \ ec2 allocate-address \ --domain vpc \ --query AllocationId \ --output text) && echo ${ALLOCATION_ID}
- output
eipalloc-xxxxxxxx
IP アドレスを確認
- run
EIP=$(aws \ --region ap-northeast-1 \ ec2 describe-addresses \ --allocation-ids ${ALLOCATION_ID} \ --query Addresses[].PublicIp \ --output text) && echo ${EIP}
- output
xx.xxx.xx.xxx
EIP 付与
- run
REGION=ap-northeast-1 INSTANCE_ID=$(aws \ --region ${REGION} \ ec2 describe-instances \ --filters Name=tag:Name,Values=foo \ --query 'Reservations[].Instances[].InstanceId' \ --output text) && echo ${INSTANCE_ID} ASSOCIATE_ID=$(aws \ --region ${REGION} \ ec2 associate-address \ --instance-id ${INSTANCE_ID} \ --allocation-id ${ALLOCATION_ID} \ --output text) && echo ${ASSOCIATE_ID} aws \ --region ${REGION} \ ec2 describe-instances \ --filters 'Name=tag:Name,Values=foo' \ --query 'Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value,PublicIpAddress]' \ --output table
- output
i-xxxxxxxx
eipassoc-87654321
--------------------------
| DescribeInstances |
+------+-----------------+
| foo | xx.xxx.xx.xxx |
+------+-----------------+
EIP ひっぺがし
- run
ENI=$(aws \ --region ${REGION} \ ec2 describe-instances \ --instance-ids ${INSTANCE_ID} \ --query 'Reservations[].Instances[].NetworkInterfaces[].NetworkInterfaceId' \ --output text) && echo ${ENI} ASSOCIATE_ID=$(aws \ --region ${REGION} \ ec2 describe-network-interfaces \ --network-interface-ids ${ENI} \ --query NetworkInterfaces[].Association[].AssociationId \ --output text) && echo ${ASSOCIATE_ID} aws --region ${REGION} ec2 disassociate-address --association-id ${ASSOCIATE_ID}
- output
eni-xxxxxxxx eipassoc-xxxxxxxx
EIP を別のインスタンスに付与
- run
REGION=ap-northeast-1 ALLOCATION_ID=$(aws \ ec2 describe-addresses \ --public-ips ${EIP} \ --query Addresses[].AllocationId \ --output text) && echo ${ALLOCATION_ID} NEW_INSTANCE_ID=$(aws \ --region ${REGION} \ ec2 describe-instances \ --filters Name=tag:Name,Values=bar \ --query 'Reservations[].Instances[].InstanceId' \ --output text) && echo ${NEW_INSTANCE_ID} NEW_ASSOCIATE_ID=$(aws \ --region ${REGION} \ ec2 associate-address \ --instance-id ${NEW_INSTANCE_ID} \ --allocation-id ${ALLOCATION_ID} \ --query AssociationId \ --output text) && echo ${NEW_ASSOCIATE_ID} aws \ --region ${REGION} \ ec2 describe-instances \ --filters 'Name=tag:Name,Values=bar' \ --query 'Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value,PublicIpAddress]' \ --output table
- output
eipalloc-zzzzzzzz
i-zzzzzzzz
eipassoc-12345678
--------------------------
| DescribeInstances |
+------+-----------------+
| bar | xx.xxx.xx.xxx |
+------+-----------------+
以上
メモでした。