我正在尝试使用AWS Java SDK v1.7.5访问我的AWS DataPipelines,但listPipelines在下面的代码中返回一个空列表。
我有在美国东部地区安排的DataPipelines,我相信我应该能够使用DataPipelineClient的listPipelines方法列出。我已经使用ProfilesConfigFile进行身份验证并连接到S3,DynamoDB和Kinesis没有问题。我已将PowerUserAccess访问策略授予配置文件中指定的IAM用户。我也尝试将管理员访问策略应用于用户,但它没有改变任何内容。这是我正在使用的代码:
//Establish credentials for connecting to AWS.
File configFile = new File(System.getProperty("user.home"), ".aws/config");
ProfilesConfigFile profilesConfigFile = new ProfilesConfigFile(configFile);
AWSCredentialsProvider awsCredentialsProvider = new ProfileCredentialsProvider(profilesConfigFile, "default");
//Set up the AWS DataPipeline connection.
DataPipelineClient dataPipelineClient = new DataPipelineClient(awsCredentialsProvider);
Region usEast1 = Region.getRegion(Regions.US_EAST_1);
dataPipelineClient.setRegion(usEast1);
//List all pipelines we have access to.
ListPipelinesResult listPipelinesResult = dataPipelineClient.listPipelines(); //empty list returned here.
for (PipelineIdName p: listPipelinesResult.getPipelineIdList()) {
System.out.println(p.getId());
}
答案 0 :(得分:0)
确保检查是否有更多结果 - 我注意到有时API只返回很少的管道(甚至可能是空的),但有一个标志可以获得更多结果。您可以像这样检索它们:
void listPipelines(DataPipelineClient dataPipelineClient, String marker) {
ListPipelinesRequest request = new ListPipelinesRequest();
if (marker != null) {
request.setMarker(marker);
}
ListPipelinesResult listPipelinesResult = client.listPipelines(request);
for (PipelineIdName p: listPipelinesResult.getPipelineIdList()) {
System.out.println(p.getId());
}
// Call recursively if there are more results:
if (pipelineList.getHasMoreResults()) {
listPipelines(dataPipelineClient, listPipelinesResult.getMarker());
}
}