2

我正在尝试使用 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());
}
4

1 回答 1

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());
    }
}
于 2014-08-07T17:14:30.667 回答