当前位置: 首页 > 知识库问答 >
问题:

Spring AWS上下文凭据-不工作

施恩
2023-03-14

我遇到了与这里提到的问题类似的问题。我使用的是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/凭证文件。我没有具体说明。

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

共有1个答案

尉迟宣
2023-03-14

在我的项目中,我使用了这样的“基本凭证”

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

它工作得很好。

 类似资料:
  • 我尝试了《Android版OpenGL ES2》一书中所示的程序,但它不起作用!! 我在Odroid E、三星s3、三星y、三星star中测试过!! 下面是我的代码 MySurface类:

  • 编辑: 为了说明这一点,我是通过ubuntu wsl上的bash终端完成的,而不是使用windows版本的Git。我使用的是Ubuntu中包含的git版本。我输入的所有这些命令都是linux命令。

  • 下面是我的表格: 截取方法如下: 我添加了以下bean:

  • 我正在尝试将java项目构建为一个jar文件,它需要google凭据才能运行。 运行此命令时: 我收到这个错误: 我按如下方式存储凭据的路径: 我使用此方法从资源文件夹检索凭据: 我不明白我需要做什么来避免这个错误。任何帮助都将不胜感激。

  • 我有一个用户名和密码在我的Java应用程序调用外部API。我想模糊这些凭据的字符串,而不是硬编码在源代码中的纯文本。 有什么建议吗?

  • 目前,我必须编写一个基于Spring Web MVC的应用程序。因为我需要对登录过程有更多的控制,所以我像这样重新实现了AuthenticationProvider(登录总是成功的): 该提供程序在配置中自动连线: 现在我的问题是:用户登录后,我尝试在控制器操作中获取他的凭据,因为我需要他的密码来进行未来的身份验证(其他系统等): 现在这会导致空指针异常: 我读到,所有 Authenticatio