#!/bin/bash
# 确保脚本以错误退出方式运行
set -e
# 用户需要配置的变量
# 请输入您的目标实例 ID
INSTANCE_ID="i-080a5478b1443441d" # 替换为您的 EC2 实例 ID
# 获取当前关联的 Elastic IP 的 Allocation ID
CURRENT_EIP_ALLOC_ID=$(aws ec2 describe-addresses --filters "Name=instance-id,Values=$INSTANCE_ID" --query "Addresses[0].AllocationId" --output text)
if [ "$CURRENT_EIP_ALLOC_ID" != "None" ]; then
echo "当前实例 ($INSTANCE_ID) 关联的 Elastic IP Allocation ID: $CURRENT_EIP_ALLOC_ID"
echo "正在释放当前的 Elastic IP..."
aws ec2 release-address --allocation-id $CURRENT_EIP_ALLOC_ID
echo "当前的 Elastic IP 已释放。"
else
echo "实例 ($INSTANCE_ID) 没有关联的 Elastic IP。"
fi
# 分配新的 Elastic IP
echo "正在分配新的 Elastic IP..."
NEW_EIP_ALLOC_ID=$(aws ec2 allocate-address --domain vpc --query "AllocationId" --output text)
NEW_EIP_PUBLIC_IP=$(aws ec2 describe-addresses --allocation-ids $NEW_EIP_ALLOC_ID --query "Addresses[0].PublicIp" --output text)
echo "新的 Elastic IP Allocation ID: $NEW_EIP_ALLOC_ID"
echo "新的 Elastic IP Public IP: $NEW_EIP_PUBLIC_IP"
# 关联新的 Elastic IP 到实例
echo "正在将新的 Elastic IP 关联到实例 ($INSTANCE_ID)..."
aws ec2 associate-address --instance-id "$INSTANCE_ID" --allocation-id "$NEW_EIP_ALLOC_ID"
echo "新的 Elastic IP 已成功关联到实例 ($INSTANCE_ID)。"
echo "新的 Public IP: $NEW_EIP_PUBLIC_IP"