使用aws cli获取最新的Windows 2012R2基本AMI ID?

Idr*_*ala 4 amazon-web-services aws-cli aws-powershell amazon-ami

有没有办法使用aws cli获取最新的Windows 2012R2基础AMI ID?

类似Get-EC2ImageByName -Names WINDOWS_2012R2_BASEPowershell的东西.我想在Linux中使用它.

我尝试过使用AMI id, aws ec2 describe-images --owners amazon --filters "Name=name,Values=Windows_Server-2012-R2_RTM-English-64Bit-Base-*"但感觉就像是黑客.在Powershell中有更好的方法吗?

Ant*_*ace 5

您描述的"hack"是在AWS CLI中检索这些内容的正确方法.事实上,这就是PowerShell Tools Get-EC2ImageByName在幕后所做的事情; 它将原始AMI名称(由ShowFilter参数公开)映射到由参数公开的预定义名称模式AllAvailable.

您可以通过列出ShowFilter参数来看到这一点; 第一个结果与您列出的名称值匹配:

C:/ > get-ec2imagebyname -ShowFilters

Windows_Server-2012-R2_RTM-English-64Bit-Base*
Windows_Server-2012-R2_RTM-English-64Bit-SQL_2014_SP1_Express*
Windows_Server-2012-R2_RTM-English-64Bit-SQL_2014_SP1_Standard*
Windows_Server-2012-R2_RTM-English-64Bit-SQL_2014_SP1_Web*
Windows_Server-2012-RTM-English-64Bit-Base*
...
Run Code Online (Sandbox Code Playgroud)

要从AWS CLI返回最新的Windows 2012 R2 AMI ID,请按CreationDate对查询进行排序,并将限制仅限于最后的结果.

例:

aws ec2 describe-images \
    --owners 'amazon' \
    --filters 'Name=name,Values=Windows_Server-2012-R2_RTM-English-64Bit-Base*' \
    --query 'sort_by(Images, &CreationDate)[-1].[ImageId]' \
    --output 'text'
Run Code Online (Sandbox Code Playgroud)

输出:

ami-11e84107
Run Code Online (Sandbox Code Playgroud)

进一步阅读