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);
このコードを実行すると、次のエラーメッセージが表示されます。
スレッド「メイン」の例外com.amazonaws.SdkClientException:com.amazonaws.client.builder.AwsClientBuilderのcom.amazonaws.regions.AwsRegionProviderChain.getRegion(AwsRegionProviderChain.Java:56)のチェーン内のプロバイダーからリージョン情報を読み込めません.setRegion(AwsClientBuilder.Java:319)at com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.Java:295)at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.Java:38)atcom。 eoffice.aws.speech.Polly.main(Polly.Java:42)
IAMポリシーシミュレータを使用して認証情報を確認しました。これは正常に機能し、権限は問題ありません。
ClientBuilderでリージョンを設定するメソッドはAmazonPollyClientBuilderには表示されないため、リージョンを指定する(Java SDK)方法がありません。
更新: defaultAwsREgionProviderChainに問い合わせると、同じエラーメッセージが表示されます
DefaultAwsRegionProviderChain defaultAwsRegionProviderChain = new DefaultAwsRegionProviderChain();
System.out.println(defaultAwsRegionProviderChain.getRegion());
更新2: de .awsフォルダーに次のコンテンツを含む設定ファイルを作成すると、次のようになります。
[デフォルト] region = eu-west-1
それは機能しますが、ファイルシステムに依存せずにこれを設定する方法が必要です。
このように地域を設定できると思います
AmazonPollyClient apClient = (AmazonPollyClient) AmazonPollyClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCreds)).withRegion("<aws-region>").build();