AWS Cloudshell一键更换EC2实例Elastic IP


#!/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"
Previous Post
No Comment
Add Comment
comment url