如何在DescribeImagesRequest中按名称过滤描述的图像?

rip*_*234 5 java amazon-ec2 amazon-web-services

我正在尝试检查特定 AMI 是否存在。所以,我正在做:

val filter = new Filter().withName("Name").withValues(amiName)
val result = ec2.describeImages(new DescribeImagesRequest().withFilters(filter))
result.getImages.size() > 0
Run Code Online (Sandbox Code Playgroud)

(代码是 Scala 而不是 Java,但这并不真正相关)。我收到以下异常:

com.amazonaws.AmazonServiceException: The filter 'Name' is invalid
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:644) ~[aws-java-sdk-1.4.2.1.jar:na]
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:338) ~[aws-java-sdk-1.4.2.1.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:190) ~[aws-java-sdk-1.4.2.1.jar:na]
    at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:6199) ~[aws-java-sdk-1.4.2.1.jar:na]
    at com.amazonaws.services.ec2.AmazonEC2Client.describeImages(AmazonEC2Client.java:2905) ~[aws-java-sdk-1.4.2.1.jar:na]
Run Code Online (Sandbox Code Playgroud)

如何正确定义DescribeImagesRequest 的过滤器?

rip*_*234 3

TL;DR - 使用name而不是Name作为关键。

为了进行调查,我转向本地安装的 ec2 工具,然后运行

ec2-describe-images -o self -F name=myaminame
Run Code Online (Sandbox Code Playgroud)

遇到了类似的错误,但对 Google 更友好:

Filter definitions must have format 'name=value', but found 'name'
Run Code Online (Sandbox Code Playgroud)

谷歌搜索让我找到了这篇博客文章,然后从命令行开始工作:

ec2-describe-images -o self -F "name=myaminame"
Run Code Online (Sandbox Code Playgroud)

现在,在这次无关的游览之后,我发现了一个简单的问题:我尝试了Nameas key ,而实际上 key 应该是小写的name