我的 mule 应用程序将 json 记录写入运动流。我使用 KPL 生产者库。在本地运行时,它会从 .aws/credentials 中选择 AWS 凭证并将记录成功写入 kinesis。
但是,当我将应用程序部署到 Cloudhub 时,它会引发 AmazonClientException,这显然是由于无法访问 DefaultAWSCredentialsProviderChain 类支持的任何目录。(http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html)
这就是我附加凭据的方式,它在 .aws/credentials 中本地显示:
config.setCredentialsProvider( new
DefaultAWSCredentialsProviderChain());
我想不出一种使用 my-app.properies 文件显式提供凭据的方法。
然后我尝试用 getter/setter 创建一个单独的配置文件。将访问密钥和私钥设置为私有,然后执行 getter:
public AWSCredentialsProvider getCredentials() {
if(accessKey == null || secretKey == null) {
return new DefaultAWSCredentialsProviderChain();
}
return new StaticCredentialsProvider(new BasicAWSCredentials(getAccessKey(), getSecretKey()));
}
}
这旨在以这种方式代替 DefaultAWSCredentialsProviderChain 类使用---
config.setCredentialsProvider(new AWSConfig().getCredentials());
部署时仍然抛出相同的错误。以下 repo 声明可以提供显式凭据。我需要帮助来弄清楚如何,因为我找不到合适的文档/示例。 https://github.com/awslabs/amazon-kinesis-producer/blob/master/java/amazon-kinesis-producer-sample/src/com/amazonaws/services/kinesis/producer/sample/SampleProducer.java