AmazonClientException:无法从链中任何提供程序加载凭证

问题描述 投票:1回答:1

我的m子应用程序将json记录写入kinesis流。我使用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文件显式提供凭据的方法。

然后,我尝试使用getters / setters创建单独的配置文件。将访问密钥和私有密钥设置为私有,然后强制使用吸气剂:

public AWSCredentialsProvider getCredentials() { 
    if(accessKey == null || secretKey == null) { 
        return new DefaultAWSCredentialsProviderChain(); 
    } 

    return new StaticCredentialsProvider(new BasicAWSCredentials(getAccessKey(), getSecretKey())); 
} 

}

打算以此方式代替DefaultAWSCredentialsProviderChain类---

config.setCredentialsProvider(new AWSConfig().getCredentials());

部署后仍然会引发相同的错误。以下回购声明可以提供显式凭证。我需要帮助找出原因,因为找不到合适的文档/示例。https://github.com/awslabs/amazon-kinesis-producer/blob/master/java/amazon-kinesis-producer-sample/src/com/amazonaws/services/kinesis/producer/sample/SampleProducer.java

java mule amazon-kinesis anypoint-studio cloudhub
1个回答
0
投票

我也遇到过同样的问题,所以我得到了这个解决方案,希望对您也有用。

@Value("${s3_accessKey}")
private String s3_accessKey;

@Value("${s3_secretKey}")
private String s3_secretKey;

//this above  value I am taking from Application.properties file

BasicAWSCredentials creds = new BasicAWSCredentials(s3_accessKey, 
s3_secretKey); 

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().
withCredentials(new AWSStaticCredentialsProvider(creds))
    .withRegion(Regions.US_EAST_2)
    .build();
© www.soinside.com 2019 - 2024. All rights reserved.