Java Awssdk S3 Tạo và sử dụng EnvironmentVariableCredentialsProvider
Như bạn đã biết "accessKeyId/secretAccessKey" có thể được code cứng trong mã Java, điều này gây khó khăn cho việc bảo trì và mang tới một rủi ro bảo mật.
StaticCredentialsProvider Example
AwsCredentials credentials = AwsBasicCredentials.create( //
MyAccessKey.ACCESS_KEY_ID, // accessKeyId
MyAccessKey.SECRET_ACCESS_KEY // secretAccessKey
);
StaticCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(credentials);
- Java Awssdk S3 StaticCredentialsProvider
EnvironmentVariableCredentialsProvider có thể đọc các giá trị "accessKeyId/secretAccessKey" được thiết lập trong biến môi trường. Các biến môi trường này bao gồm:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_SESSION_TOKEN (Optional)

Hình ảnh minh hoạ các biến môi trường trên hệ điều hành Windows.
Việc thiết lập biến môi trường hơi khác nhau trên các hệ điều hành khác nhau, dưới đây là cách thiết lập biến môi trường trên một vài hệ điều hành thông dụng:
- Thiết lập biến môi trường trên Windows
- Thiết lập biến môi trường trên Mac OS
- Thiết lập biến môi trường trên Ubuntu
1. Thư viện
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/s3 -->
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>2.21.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/s3-transfer-manager -->
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3-transfer-manager</artifactId>
<version>2.21.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk.crt/aws-crt -->
<dependency>
<groupId>software.amazon.awssdk.crt</groupId>
<artifactId>aws-crt</artifactId>
<version>0.28.0</version>
</dependency>
<!-- Log Library -->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
</dependency>
<!-- Log Library -->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.9</version>
</dependency>
2. EnvironmentVariableCredentialsProvider
Tạo đối tượng EnvironmentVariableCredentialsProvider:
EnvironmentVariableCredentialsProviderUtils.java
package org.o7planning.java_14237_awssdk_s3.utils;
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
public class EnvironmentVariableCredentialsProviderUtils {
public static EnvironmentVariableCredentialsProvider create() {
//
// EnvironmentVariableCredentialsProvider will read Environment Variables:
// AWS_ACCESS_KEY_ID
// AWS_SECRET_ACCESS_KEY
// AWS_SESSION_TOKEN (Optional)
//
EnvironmentVariableCredentialsProvider provider = EnvironmentVariableCredentialsProvider.create();
return provider;
}
}
AWS_SESSION_TOKEN (Optional)
- Wait for update...
3. Ví dụ
Ví dụ, tạo đối tượng S3Client với EnvironmentVariableCredentialsProvider:
S3ClientExample.java
package org.o7planning.java_14237_awssdk_s3;
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
public class S3ClientExample {
// EU (Frankfurt) - Germany.
private static final Region MY_S3_REGION = Region.EU_CENTRAL_1;
private static S3Client createS3Client() {
//
// EnvironmentVariableCredentialsProvider will read Environment Variables:
// AWS_ACCESS_KEY_ID
// AWS_SECRET_ACCESS_KEY
// AWS_SESSION_TOKEN (Optional)
//
EnvironmentVariableCredentialsProvider provider = EnvironmentVariableCredentialsProvider.create();
S3Client client = S3Client.builder() //
.credentialsProvider(provider) //
.region(MY_S3_REGION) //
.build();
return client;
}
public static void main(String[] args) {
S3Client s3Client = createS3Client();
System.out.println("s3Client: " + s3Client);
// And use s3Client to upload files...
}
}
- Java Awssdk S3 Tải file xuống từ S3 Bucket với S3Client
Ví dụ, tạo đối tượng S3TransferManager với EnvironmentVariableCredentialsProvider:
S3TransferManager.java
package org.o7planning.java_14237_awssdk_s3;
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3AsyncClient;
import software.amazon.awssdk.transfer.s3.S3TransferManager;
import software.amazon.awssdk.transfer.s3.SizeConstant;
public class S3TransferManagerExample {
// EU (Frankfurt) - Germany.
private static final Region MY_S3_REGION = Region.EU_CENTRAL_1;
private static S3TransferManager createS3TransferManager() {
//
// EnvironmentVariableCredentialsProvider will read Environment Variables:
// AWS_ACCESS_KEY_ID
// AWS_SECRET_ACCESS_KEY
// AWS_SESSION_TOKEN (Optional)
//
EnvironmentVariableCredentialsProvider provider = EnvironmentVariableCredentialsProvider.create();
S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder() //
.credentialsProvider(provider) //
.region(MY_S3_REGION) //
.targetThroughputInGbps(20.0) //
.minimumPartSizeInBytes(10 * SizeConstant.MB)//
.build();
return S3TransferManager.builder().s3Client(s3AsyncClient).build();
}
public static void main(String[] args) {
S3TransferManager s3TransferManager = createS3TransferManager();
System.out.println("s3TransferManager: " + s3TransferManager);
// And use s3TransferManager to upload file,directory...
}
}
Các hướng dẫn Amazon Web Services
- Java Awssdk S3 Tải tệp lên S3 Bucket với S3Client
- Vô hiệu hoá bộ nhớ đệm của CloudFront với Java
- Tạo AWS accessKeyId/secretAccessKey
- Java Awssdk S3 Liệt kê các đối tượng trong S3 Bucket
- Tạo DigitalOcean Spaces Access Key
- Java Awssdk Các Credentials Provider thông dụng
- Java Awssdk S3 Tạo và sử dụng ProfileCredentialsProvider
- Java Awssdk S3 Tạo và sử dụng EnvironmentVariableCredentialsProvider
- Java Awssdk S3 Tạo và sử dụng SystemPropertyCredentialsProvider
- Java Awssdk S3 Tải object lên với S3TransferManager
- Java Awssdk S3 Tải object xuống với S3TransferManager
- Java thao tác với DigitalOcean Spaces sử dụng S3TransferManager
- Java tạo, liệt kê và xoá S3 Bucket
- Aws Console Tạo tài khoản người dùng IAM
- Giới thiệu về Amazon Web Services (AWS)
- Giới thiệu về Amazon S3
- Giới thiệu về Amazon Cloudfront và kiến trúc của nó
- Làm sao để giảm chi phí Amazon Cloudfront?
- Giới thiệu về DigitalOcean Spaces
- Hướng dẫn tạo DigitalOcean Spaces Bucket
Show More