![](/img/trans.png)
[英]Parsing aws ec2 describe-instances to get all private ip addresses
[英]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
因此,您的目標是:
試試下面的腳本,我無法嘗試這個,因為我沒有方便的環境,但是,這應該可以工作。 如果您遇到任何錯誤消息,請更新(明確提到錯誤消息)
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.