AWS Polly Java客户端提供错误:无法从链中的任何提供程序加载区域信息

时间:2017-01-12 12:03:37

标签: java amazon-web-services amazon-iam amazon-polly

我正在使用AWS的JAVA SDK来创建一个Polly客户端。 像这样:

BasicAWSCredentials awsCreds = new BasicAWSCredentials("<IAM access Key>", "IAM secret key>");

    AmazonPollyClient apClient = (AmazonPollyClient) AmazonPollyClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
            .build();


    SynthesizeSpeechRequest tssRequest = new SynthesizeSpeechRequest();
    tssRequest.setText(<text>);
    tssRequest.setVoiceId(<voiceid>);
    tssRequest.setOutputFormat(OutputFormat.Mp3);
    SynthesizeSpeechResult tssResult = apClient.synthesizeSpeech(tssRequest);

当我运行此代码时,收到以下错误消息:

  

线程中的异常&#34; main&#34; com.amazonaws.SdkClientException:无法   从链中的任何提供者处加载区域信息   com.amazonaws.regions.AwsRegionProviderChain.getRegion(AwsRegionProviderChain.java:56)     在   com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:319)     在   com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:295)     在   com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:38)     在com.eoffice.aws.speech.Polly.main(Polly.java:42)

我使用IAM策略模拟器检查了凭据。这很好用,权限还可以。

在AmazonBuilderClientBuilder中看不到在ClientBuilder中设置Region的方法,因此我没有(Java SDK)方式来指定区域。

更新 当我问defaultAwsREgionProviderChain时,我收到相同的错误消息

DefaultAwsRegionProviderChain defaultAwsRegionProviderChain = new DefaultAwsRegionProviderChain();
System.out.println(defaultAwsRegionProviderChain.getRegion());

更新2: 当我在de .aws文件夹中创建一个包含以下内容的配置文件时:

  

[默认]   region = eu-west-1

它有效,但我需要一种方法来设置它而不依赖于文件系统。

2 个答案:

答案 0 :(得分:7)

提供名称为&#34; AWS_REGION&#34;的系统环境变量。做了伎俩。 请参阅IBM Bluemix中的配置屏幕截图

enter image description here

答案 1 :(得分:5)

我想你可以像这样设置Region

AmazonPollyClient apClient = (AmazonPollyClient) AmazonPollyClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCreds)).withRegion("<aws-region>").build();