[英]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
开箱即用的凭证文件:
以下列表显示了支持的凭证检索技术:
Java 系统属性–
aws.accessKeyId
和aws.secretAccessKey
。 适用于 Java 的 AWS 开发工具包使用SystemPropertyCredentialsProvider
加载这些凭证。环境变量– AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY 。 适用于 Java 的 AWS 开发工具包使用
EnvironmentVariableCredentialsProvider
类加载这些凭证。默认凭证配置文件- 此文件的特定位置可能因平台而异,但通常位于
~/.aws/credentials
。 该文件由许多 AWS 开发工具包和 AWS CLI 共享。 适用于 Java 的 AWS 开发工具包使用ProfileCredentialsProvider
加载这些凭证。您可以使用 AWS CLI 提供的 aws configure 命令创建凭证文件。 您也可以通过使用文本编辑器编辑文件来创建它。 有关凭证文件格式的信息,请参阅 AWS 凭证文件格式。
Amazon ECS 容器凭证– 如果设置了环境变量
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
则从 Amazon ECS 加载该凭证。 适用于 Java 的 AWS 开发工具包使用ContainerCredentialsProvider
加载这些凭证。实例配置文件凭证– 这用于 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.