Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何在同一区域的 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 是您运行脚本的日期。
- 语言
- 中文 (简体)
