Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
如何在同一区域的 AWS 账户之间批量转移弹性 IP 地址?
我想在同一 AWS 区域的 AWS 账户之间转移多个弹性 IP 地址。
简短描述
当您转移弹性 IP 地址时,源账户和目标账户之间会有一个两步握手操作。源账户可以是标准 AWS 账户或 AWS Organizations 账户。当源账户开始发起转移时,目标账户有 7 天的时间接受转移。否则,弹性 IP 地址将返回其原始所有者。
AWS 不会通知目标账户存在待处理的弹性 IP 地址转移请求。为了便于在规定时间内完成转移,源账户所有者必须告知目标账户所有者此请求。
要同时转移多个弹性 IP 地址,请在 Linux 中使用 bash 脚本。
**注意:**要在账户之间转移单个弹性 IP 地址,请参阅如何在同一区域的 AWS 账户之间转移弹性 IP 地址?
解决方法
**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
转移 IP 地址(源账户所有者)
1. 验证您是否为源账户配置了 AWS CLI 证书。此外,请确认您拥有 AWS Identity and Access Management(IAM)权限,以允许 ec2:DescribeAddresses 和 ec2:EnableAddressTransfer API 调用。
2. 将弹性 IP 地址添加到文本文件中,每行一个地址。在以下示例 bash 脚本中,此文本文件名为 eips.txt。
3. 创建一个与以下示例类似的 bash 脚本,命名为 EIPTransfer.sh:
#! /bin/bash ARRAY=() while read line do ARRAY+=($line) done < $1 now_start="$(date)" echo "Starting the loop to enable transfer of the provided EIPs in Region: $2 from AWS account: $3 to AWS account: $4 at $now_start" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt for i in "${ARRAY[@]}" do echo "Trying to get the AllocationId for ${i}" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt EIPAlloc=`aws ec2 describe-addresses --filters "Name=public-ip,Values=${i}" --query "Addresses[].AllocationId" --region $2 --output text` if [[ "$EIPAlloc" == *"eipalloc"* ]]; then echo "Trying to enable transfer for ${i} with allocation-id $EIPAlloc" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt aws ec2 enable-address-transfer --allocation-id ${EIPAlloc} --transfer-account-id $4 --region $2 --output text >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt 2>&1 else echo "No allocation-id found for EIP ${i}" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt fi done now_end="$(date)" echo "All done! Exiting the script at $now_end!" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt ## usage sh EIPTransfer.sh eips.txt xx-region-y srcaccount dstaccount
4. 要运行此脚本,请运行以下命令:
sh EIPTransfer.sh eips.txt xx-region-y srcaccount dstaccount
5. 查看 EIPTransfer 日志中是否存在任何错误。该日志名为 EIPTransfer-results-DATE.txt。
**注意:**在此文件名中,DATE 是您运行脚本的日期。
接受转移(转移账户所有者)
1. 验证您是否为转移账户配置了 AWS CLI 凭证。此外,请验证您是否拥有 IAM 权限,允许 ec2:AcceptAddressTransfer API 调用。
2. 将弹性 IP 地址添加到文本文件中,每行一个地址。在以下示例 bash 脚本中,此文本文件名为 eips.txt。
3. 创建一个与以下示例类似的 bash 脚本,名为 EIPAccept.sh:
#! /bin/bash ARRAY=() while read line do ARRAY+=($line) done < $1 now_start="$(date)" echo "Starting the loop to accept transfer of the provided EIPs in Region: $2 from AWS account: $3 to AWS account: $4 at $now_start" >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt for i in "${ARRAY[@]}" do echo "Trying to accept the EIP transfer for ${i} from account $3" >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt aws ec2 accept-address-transfer --address ${i} --region $2 --output text >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt 2>&1 done now_end="$(date)" echo "All done! Exiting the script at $now_end!" >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt ## usage sh EIPAccept.sh eips.txt xx-region-y srcaccount dstaccount
4. 要运行此脚本,请运行以下命令:
sh EIPAccept.sh eips.txt xx-region-y srcaccount dstaccount
5. 查看 EIPAccept 日志中是否存在任何错误。此日志名为 EIPAccept-results-DATE.txt。
**注意:**在此文件名中,DATE 是您运行脚本的日期。

相关内容
- 已提问 2 年前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前