AWS 凭证用于验证身份,并授权对 DynamoDB 等等 AWS 服务的访问。配置了aws凭证后,才可以通过编程方式或从AWS CLI连接访问AWS资源。凭证存储在哪里呢?有以下几个方法:
一、使用文件存储
1、介绍
文件存储适用于长期和多账户配置。AWS SDK 也会自动读取配置文件中的凭证。且默认读取: ~/.aws/credentials
,对应 Windows 上的 %UserProfile%\.aws\credentials
路径下。示例:
[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
aws_session_token = your_session_token # 如果使用临时凭证时需要配置此项[profile_name]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
aws_session_token = your_session_token # 如果使用临时凭证时需要配置此项
如果凭证文件放在非aws默认的目录下,如何获取???
2、文件生成方法
文件是怎么来的,有两种方法,可以使用aws cli配置,也可以手动编辑。
(1) aws cli命令生成
在自动在系统目录(windows在C:\Users\用户名\.aws)下生成两个文件,config和credentials
(2)手动生成
手动创建上述的两个文件,并手动编辑内容。
二、使用环境变量
适用于本地开发和临时凭证。通过设置环境变量来传递 AWS 凭证。设置这些环境变量后,AWS SDK 会自动读取并使用它们来执行请求。常用的环境变量:
AWS_ACCESS_KEY_ID:你的 AWS 访问密钥 ID
AWS_SECRET_ACCESS_KEY:你的 AWS 密钥访问密钥
AWS_SESSION_TOKEN:如果使用临时凭证,需要设置此环境变量。
如windows设置命令:
set AWS_ACCESS_KEY_ID=your_access_key_id
set AWS_SECRET_ACCESS_KEY=your_secret_access_key
set AWS_SESSION_TOKEN=your_session_token # 如果使用临时凭证
三、硬编码
在代码中写死。适用于动态设置凭证的场景。以dynamo为例:
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.regions.Region;public class DynamoDbWithCustomCredentials {public static void main(String[] args) {// 创建基本凭证AwsBasicCredentials credentials = AwsBasicCredentials.create("your_access_key_id","your_secret_access_key");// 使用这些凭证创建 DynamoDbClientDynamoDbClient dynamoDbClient = DynamoDbClient.builder().credentialsProvider(StaticCredentialsProvider.create(credentials)).region(Region.US_EAST_1) // 替换为你的区域.build();// 使用 DynamoDbClient 执行操作System.out.println("DynamoDB Client created with custom credentials.");// 关闭客户端dynamoDbClient.close();}
}
如果你使用 STS(安全令牌服务) 获得了临时凭证(例如,通过 sts:assumeRole
),你需要使用 Session Token
来配置凭证。临时凭证包括 Access Key ID
、Secret Access Key
和 Session Token
。
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.regions.Region;public class DynamoDbWithTemporaryCredentials {public static void main(String[] args) {// 创建临时凭证AwsSessionCredentials sessionCredentials = AwsSessionCredentials.create("temporary_access_key_id","temporary_secret_access_key","temporary_session_token");// 使用临时凭证创建 DynamoDbClientDynamoDbClient dynamoDbClient = DynamoDbClient.builder().credentialsProvider(StaticCredentialsProvider.create(sessionCredentials)).region(Region.US_EAST_1) // 替换为你的区域.build();// 使用 DynamoDbClient 执行操作System.out.println("DynamoDB Client created with temporary credentials.");// 关闭客户端dynamoDbClient.close();}
}