您描述的“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,请按 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'
输出:
ami-11e84107
延伸阅读