[英]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.