我正在尝试从AWS获取以特定前缀开头的参数列表。我不知道如何获取所有参数。
ParametersFilter filter =
new ParametersFilter().
withKey("Name").
withValues("vyom"); // the key prefix i want
DescribeParametersRequest request =
new DescribeParametersRequest().withFilters(filter);
AWSSimpleSystemsManagement client =
AWSSimpleSystemsManagementClientBuilder.defaultClient();
DescribeParametersResult result =
client.
describeParameters(request);
List<ParameterMetadata> params =
result.
getParameters(); // returns a list of size one
DescribeParametersResult
始终设置为nextToken
,然后使用下一个令牌再次调用客户端,返回下一个参数。
从终端调用aws cli返回所有参数,正如我期望的那样。
aws ssm describe-parameters --filters "Key=Name,Values=vyom"
答案 0 :(得分:0)
我遇到了同样的问题;它似乎按设计工作。来自docs:
请求结果将尽力而为。如果您在请求中指定MaxResults,则响应中将包含不超过指定限制的信息。但是,返回的项目数可以在零到MaxResults的值之间。如果服务在处理结果时达到内部限制,则它将停止操作并返回直到该点为止的匹配值和NextToken。您可以在后续调用中指定NextToken以获取下一组结果。
也就是说,在分页之后 应用过滤。如果将MaxResults
设置为50,则第一页从控制台UI中可见的前50个参数返回过滤后的结果,第二页从后50个参数返回结果,依此类推... CLI只是为您遍历页面的工作。
一旦开始对结果进行分页,您将遇到的下一个问题是激进的节流。 here有一些很好的讨论,包括gem:
显然,最好的解决方案是提高AWS速率限制,但他们似乎非常不愿意为DescribeParameters这样做(他们坚持认为只能用于CLI手动查询)。
神速!