使用 aws cli 获取最新的 Windows 2012R2 base AMI id?

Get the latest Windows 2012R2 base AMI id using aws cli?

有没有办法使用 aws cli 获取最新的 Windows 2012R2 base AMI id?

类似于 Powershell 中的 Get-EC2ImageByName -Names WINDOWS_2012R2_BASE。我想在 Linux.

中使用它

我试过获取 AMI id aws ec2 describe-images --owners amazon --filters "Name=name,Values=Windows_Server-2012-R2_RTM-English-64Bit-Base-*" 但感觉就像一个 hack。有没有更好的方法来像在 Powershell 中那样做?

您描述的 "hack" 是在 AWS CLI 中检索这些内容的正确方法。事实上,这就是 PowerShell 工具的 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*
...

要仅从 AWS CLI 获取最新的 Windows 2012 R2 AMI ID,请按创建日期对您的查询进行排序并限制为仅最后一个结果。

示例:

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'

输出:

ami-11e84107

进一步阅读