簡體   English   中英

AWS EC2通過PowerShell / CMD工具停止所有操作

[英]AWS EC2 stop all through PowerShell/CMD tools

我在AWS中使用了許多“一次性”服務器,我們正在努力降低這些服務器的成本。

最初,我們正在尋找一個相當基本的“awsec2 stop all”命令,該命令將從我們知道將全天候運行的服務器按計划運行。

在檢查AWS記錄的內容后,我們似乎需要引入所有當前運行的實例,獲取這些實例的ID,然后將它們傳遞到命令中,而不是簡單地聲明我希望所有實例都關閉。

是否有更好的方法來收集這些ID,例如只是能夠發出“全部停止”?

感謝幫助。

AWS CLI使用--query選項提供內置JSON解析。 此外,您可以使用--filter選項僅對正在運行的實例執行stop命令。

aws ec2 describe-instances \
--filter Name=instance-state-name,Values=running \
--query 'Reservations[].Instances[].InstanceId' \
--output text | xargs aws ec2 stop-instances --instance-ids

這是未經測試的,但應該使用適用於Powershell的AWS工具進行操作

@(Get-EC2Instance) | % {$_.RunningInstance} | % {Stop-EC2Instance $_.InstanceId}

在簡單的英語中,上面的行獲取EC2實例對象的集合(Amazon.EC2.Model.Reservation),為每個對象(與實例相關的各種屬性的集合)獲取RunningInstance屬性,並使用它來獲取每個實例的InstanceId並停止實例。

這些函數映射如下:

一定要檢查出的幫助Stop-EC2Instance ...有一些有用的參數,如-Terminate-Force您可能會感興趣。

這個單行將停止所有的實例:

for i in $(aws ec2 describe-instances | jq '.Reservations[].Instances[].InstanceId'); do aws ec2 stop-instances --instance-ids $i; done

提供:

  1. 您已安裝AWS-CLIhttp://aws.amazon.com/cli/
  2. 你已經安裝了jq json解析器。 http://stedolan.github.io/jq/

..是的,上面的語法是針對Linux Bash shell特有的。 你可以在windows上模仿powershell,並找出解析json的powersehll方法。

如果有人想做Peter Moon通過AWS DataPipeline描述的內容:

aws ec2 describe-instances --region eu-west-1 --filter Name=instance-state-name,Values=running --query 'Reservations[].Instances[].InstanceId' --output text | xargs aws ec2 stop-instances --region eu-west-1 --instance-ids

它基本上是相同的命令,但你必須在describe-instances之后和stop-instances之后添加--region以使其工作。 注意通常包含在區域名稱中的a / b / c。 如果包含在這里,這似乎會導致錯誤。

暫無
暫無

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

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