2014-05-04 4 views
2

J'essaie d'accéder à mes AWS DataPipelines à l'aide d'AWS Java SDK v1.7.5, mais listPipelines renvoie une liste vide dans le code ci-dessous.AWS DataPipelineClient - listPipelines ne renvoie aucun enregistrement

J'ai des DataPipelines qui sont planifiés dans la région Est des États-Unis, que je crois que je devrais pouvoir lister en utilisant la méthode listPipelines de DataPipelineClient. J'utilise déjà le fichier ProfilesConfigFile pour m'authentifier et me connecter à S3, DynamoDB et Kinesis sans problème. J'ai accordé la stratégie d'accès PowerUserAccess à l'utilisateur IAM spécifié dans le fichier de configuration. J'ai également essayé d'appliquer la stratégie d'accès administrateur à l'utilisateur, mais cela n'a rien changé. Voici le code que je utilise:

//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()); 
} 

Répondre

0

Assurez-vous de vérifier s'il y a plus de résultats - je l'ai remarqué, parfois, les rendements de l'API que peu de pipelines (pourrait même être vide), mais a un drapeau pour plus de résultats . Vous pouvez les récupérer comme ceci:

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()); 
    } 
} 
Questions connexes