1

我遇到了与此处提到的类似的问题。我正在使用 spring xml 配置。我指定了我的全局 AWS 上下文凭证。我正在使用 S3 出站通道适配器从 S3 下载文件。我在 config.properties 文件中指定了我的密钥。我仍然看不到用于与 S3 对话的凭据。

s3-read.xml

<int-aws:s3-outbound-channel-adapter  
               transfer-manager="transferManager"
               bucket-expression="'${s3.bucket}'"
               command-expression="'DOWNLOAD'"
               key-expression="headers.S3Key"
               progress-listener="progressListener" /> 

aws-credentials.xml

<aws-context:context-credentials>
<aws-context:simple-credentials access-key="${aws.accesskey}"
                                secret-key="${aws.secretkey}"/>
</aws-context:context-credentials> 

<!-- Define global region -->
<aws-context:context-region region="${aws.region}"/> 

配置属性

aws.accesskey=accesskey
aws.secretkey=secretkey
aws.region=us-west-2

例外是:

com.amazonaws.SdkClientException: Unable to load AWS credentials from any 
provider in the chain

我花了很多时间在这上面。当我尝试调试时,它似乎在寻找默认凭据提供程序链,它正在寻找环境变量或 ~/.aws/credentials 文件。我没有指定任何内容。

如何链接 S3 以使用这些凭据?感谢帮助。

4

1 回答 1

0

在我的项目中,我像这样使用了“BasicAWSCredentials”

public S3StorageService(AmazonS3Config s3Configs) {
    ClientConfiguration opts = new ClientConfiguration();
    opts.setSignerOverride("S3SignerType");
    BasicAWSCredentials credentials = new BasicAWSCredentials(s3Configs.getAccessKey(), s3Configs.getSecretKey());
    AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials))
            .withEndpointConfiguration(new EndpointConfiguration(s3Configs.getServiceEndpoint(), ""))
            .withClientConfiguration(opts).build();
    String defaultBucket = s3Configs.getDefaultBucket();

}

@ConfigurationProperties(prefix = "ds31s3.amazon")
public class AmazonS3Config {   
    private String  accessKey;
    private String  secretKey;
    private String  serviceEndpoint;    
    private String  defaultBucket;

在 application.properties

#Amazon S3 Configs
ds31s3.amazon.accessKey=<KEY>
ds31s3.amazon.secretKey=<SECRETKEY>
ds31s3.amazon.serviceEndpoint=<ENDPOINT>
ds31s3.amazon.defaultBucket=bucket-karthik

它运作良好。

于 2018-01-04T09:13:46.090 回答