繁体   English   中英

使用 aws java sdk 版本 2 从资源文件夹中读取 aws 配置和凭证

[英]Reading aws config and credentials from resources folder using aws java sdk version 2

我已将我的 aws 凭据从 ~/.aws/credentials 移至 maven 项目的资源文件夹。 文件夹结构看起来像这样 resources/aws/ ->config ->credentials 我正在使用 aws java sdk 版本 2+。 我如何从资源文件夹中读取值以获取区域、访问密钥、创建存储桶和执行操作。

您不应将凭据文件放在资源目录中。 AWS Java SDK 支持~/.aws开箱即用的凭证文件:

以下列表显示了支持的凭证检索技术:

  1. Java 系统属性aws.accessKeyIdaws.secretAccessKey 适用于 Java 的 AWS 开发工具包使用SystemPropertyCredentialsProvider加载这些凭证。

  2. 环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 适用于 Java 的 AWS 开发工具包使用EnvironmentVariableCredentialsProvider类加载这些凭证。

  3. 默认凭证配置文件- 此文件的特定位置可能因平台而异,但通常位于~/.aws/credentials 该文件由许多 AWS 开发工具包和 AWS CLI 共享。 适用于 Java 的 AWS 开发工具包使用ProfileCredentialsProvider加载这些凭证。

    您可以使用 AWS CLI 提供的 aws configure 命令创建凭证文件。 您也可以通过使用文本编辑器编辑文件来创建它。 有关凭证文件格式的信息,请参阅 AWS 凭证文件格式。

  4. Amazon ECS 容器凭证– 如果设置了环境变量AWS_CONTAINER_CREDENTIALS_RELATIVE_URI则从 Amazon ECS 加载该凭证 适用于 Java 的 AWS 开发工具包使用ContainerCredentialsProvider加载这些凭证。

  5. 实例配置文件凭证– 这用于 Amazon EC2 实例,并通过 Amazon EC2 元数据服务提供。 适用于 Java 的 AWS 开发工具包使用InstanceProfileCredentialsProvider加载这些凭证。

因此,要么使用ProfileCredentialsProvider要么通过系统属性或环境变量传递凭据并使用SystemPropertyCredentialsProvider / EnvironmentVariableCredentialsProvider

AWS Java SDK v2 不支持直接从资源文件夹(类路径)获取凭证。

作为替代方案,您可以将 AWS 凭证放入资源文件夹中的属性文件中:

[[项目]/src/test/resources/aws-credentials.properties:

aws_access_key_id = xxx
aws_secret_access_key = xxx

Spring 配置:

    <util:properties id="awsCredentialFile"
      location="classpath:aws-credentials.properties"/>

和你的代码:

  @Resource(name = "awsCredentialFile")
  public void setProperties(Properties properties) {
    this.accessKey = properties.getProperty("aws_access_key_id");
    this.secretKey = properties.getProperty("aws_secret_access_key");
  }

  StaticCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey));
    S3Client s3 = S3Client.builder()
        .credentialsProvider(credentialsProvider)
        .build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM