有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring AWS上下文凭据不工作

我有一个类似于前面提到的问题。我正在使用SpringXML配置。我已指定全局AWS上下文凭据。我正在使用S3出站通道适配器从S3下载一个文件。我在配置中指定了我的密钥。属性文件。我仍然无法看到用于与S3对话的凭据

s3阅读。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证书。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/凭证文件。我没有什么特别的

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


共 (1) 个答案

  1. # 1 楼答案

    在我的项目中,我使用了这样的“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;
    

    正在应用中。属性

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

    而且效果很好