EC2インスタンス名"handson-cli-ec2-eip-instance"にEIPタグ名"handson-cli-ec2-eip-eip"をアタッチします。
手順に必要な設定値を変数に格納をします。
0. リージョンの指定
リージョンを指定します。
環境変数の設定: export AWS_DEFAULT_REGION='ap-northeast-1'
環境変数の設定:
export AWS_DEFAULT_REGION='ap-northeast-1'
1. EC2インスタンス名
EC2インスタンス名を指定します。
変数の設定: EC2_INSTANCE_TAG_NAME='handson-cli-ec2-eip-instance'
変数の設定:
EC2_INSTANCE_TAG_NAME='handson-cli-ec2-eip-instance'
2. EIPタグ名
EIPタグ名を指定します。
変数の設定: EC2_EIP_TAG_NAME='handson-cli-ec2-eip-eip'
EC2_EIP_TAG_NAME='handson-cli-ec2-eip-eip'
各変数に正しい設定値が格納されていることを確認しながら保存します。
変数の確認: cat << END # 0. AWS_DEFAULT_REGION:"ap-northeast-1" AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" # 1. EC2_INSTANCE_TAG_NAME:"handson-cli-ec2-eip-instance" EC2_INSTANCE_TAG_NAME="${EC2_INSTANCE_TAG_NAME}" # 2. EC2_EIP_TAG_NAME:"handson-cli-ec2-eip-eip" EC2_EIP_TAG_NAME="${EC2_EIP_TAG_NAME}" END
変数の確認:
cat << END # 0. AWS_DEFAULT_REGION:"ap-northeast-1" AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" # 1. EC2_INSTANCE_TAG_NAME:"handson-cli-ec2-eip-instance" EC2_INSTANCE_TAG_NAME="${EC2_INSTANCE_TAG_NAME}" # 2. EC2_EIP_TAG_NAME:"handson-cli-ec2-eip-eip" EC2_EIP_TAG_NAME="${EC2_EIP_TAG_NAME}" END
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
インスタンスIDを取得します。
コマンド: EC2_INSTANCE_ID=$( \ aws ec2 describe-instances \ --filters Name=tag-key,Values=Name \ Name=tag-value,Values=${EC2_INSTANCE_TAG_NAME} \ Name=instance-state-name,Values=running \ --query Reservations[].Instances[].InstanceId \ --output text \ ) \ && echo ${EC2_INSTANCE_ID} 結果(例): i-xxxxxxxxxxxxxxxxx
コマンド:
EC2_INSTANCE_ID=$( \ aws ec2 describe-instances \ --filters Name=tag-key,Values=Name \ Name=tag-value,Values=${EC2_INSTANCE_TAG_NAME} \ Name=instance-state-name,Values=running \ --query Reservations[].Instances[].InstanceId \ --output text \ ) \ && echo ${EC2_INSTANCE_ID}
結果(例):
i-xxxxxxxxxxxxxxxxx
EIPアロケーションIDを取得します。
コマンド: EC2_EIP_ALLOCATION_ID=$( \ aws ec2 describe-addresses \ --filters Name=tag:Name,Values=${EC2_EIP_TAG_NAME} \ --query "Addresses[].AllocationId" \ --output text \ ) \ && echo ${EC2_EIP_ALLOCATION_ID} 結果(例): eipalloc-xxxxxxxxxxxxxxxxx
EC2_EIP_ALLOCATION_ID=$( \ aws ec2 describe-addresses \ --filters Name=tag:Name,Values=${EC2_EIP_TAG_NAME} \ --query "Addresses[].AllocationId" \ --output text \ ) \ && echo ${EC2_EIP_ALLOCATION_ID}
eipalloc-xxxxxxxxxxxxxxxxx
EC2インスタンスにEIPをアタッチします。
変数の確認: cat << END # EC2_EIP_ALLOCATION_ID:"eipalloc-xxxxxxxxxxxxxxxxx" EC2_EIP_ALLOCATION_ID="${EC2_EIP_ALLOCATION_ID}" # EC2_INSTANCE_ID:"i-xxxxxxxxxxxxxxxxx" EC2_INSTANCE_ID="${EC2_INSTANCE_ID}" END コマンド: aws ec2 associate-address \ --allocation-id ${EC2_EIP_ALLOCATION_ID} \ --instance-id ${EC2_INSTANCE_ID} 結果(例): { "AssociationId": "eipassoc-xxxxxxxx" }
cat << END # EC2_EIP_ALLOCATION_ID:"eipalloc-xxxxxxxxxxxxxxxxx" EC2_EIP_ALLOCATION_ID="${EC2_EIP_ALLOCATION_ID}" # EC2_INSTANCE_ID:"i-xxxxxxxxxxxxxxxxx" EC2_INSTANCE_ID="${EC2_INSTANCE_ID}" END
aws ec2 associate-address \ --allocation-id ${EC2_EIP_ALLOCATION_ID} \ --instance-id ${EC2_INSTANCE_ID}
{ "AssociationId": "eipassoc-xxxxxxxx" }
「EC2インスタンス名"handson-cli-ec2-eip-instance"にEIPタグ名"handson-cli-ec2-eip-eip"がアタッチされている。」ことを確認します。
コマンド: aws ec2 describe-addresses \ --filters Name=tag:Name,Values=${EC2_EIP_TAG_NAME} \ --query "Addresses[].InstanceId" \ --output text 結果(例): i-xxxxxxxxxxxxxxxxx
aws ec2 describe-addresses \ --filters Name=tag:Name,Values=${EC2_EIP_TAG_NAME} \ --query "Addresses[].InstanceId" \ --output text