簡體   English   中英

使用 bash 和 AWS CLI 從所有區域取消關聯和釋放所有彈性 IP 地址的腳本

[英]Script to disassociate and release all Elastic IP addresses from all regions using bash and AWS CLI

我正在學習如何使用 AWS 基礎設施和 CLI 工具。 我有許多帶有公共 IP 的 EC2 實例,我已經使用 Russell Jurney Source編寫的另一個 CLI 腳本終止了這些實例。

我試圖修改它以釋放所有公共 IP,但由於我對腳本和 json 非常陌生,我無法理解這個。 如何解決此腳本中的所有公共 IP 並執行正確的循環以便釋放每個 IP?

for region in `aws ec2 describe-regions | jq -r .Regions[].RegionName`
do
  echo "Releasing Elastic IPs in region $region..."
  for address in 'aws ecs describe-regions | jq -r .Regions[].RegionName[]'
  do
    aws ec2 disassociate-address --region $region | \
      jq -r .Reservations[].Instances[].PrivateIpAddress| \
        xargs -L 1 -I {} aws ec2 modify-instance-attribute \
          --region $region \
          --allocation-id {}\
          --public-ip {}
    aws ec2 release-address --region $region | \
      jq -r .Reservations[].Instances[].PrivateIpAddress | \
        xargs -L 1 -I {} aws ec2 terminate-instances \
          --region $region \
          --allocation-id {}
          --instance-id {}
  done
done

因此,您的目標是:

  1. 取消關聯所有區域中的所有公共 IP 並
  2. 將它們全部釋放回 AWS 池。

試試下面的腳本,我無法嘗試這個,因為我沒有方便的環境,但是,這應該可以工作。 如果您遇到任何錯誤消息,請更新(明確提到錯誤消息)

for region in $(aws ec2 describe-regions --profile default --output text | cut -f4)
do
for address in $(aws ec2 describe-addresses --region $region --profile default --query 'Addresses[].AssociationId' --output text)
do
echo -e "Disassociating $address from $region now..."
aws ec2 disassociate-address --association-id $address --region $region --profile default
for pubip in $(aws ec2 describe-addresses --region $region --profile default --query 'Addresses[].PublicIp' --output text)
do
echo -e "Now Releasing the PublicIP $pubip from region $region"
aws ec2 release-address --public-ip $pubip --region $region --profile default
done
done
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM