Java Awssdk 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 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:
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
- 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?
- Vô hiệu hoá bộ nhớ đệm CloudFront
- Giới thiệu về DigitalOcean Spaces
- Hướng dẫn tạo DigitalOcean Spaces Bucket
- Giới thiệu về Amazon ACM
- Java Awssdk S3 Tải tệp lên S3 Bucket với S3Client
- Tạo AWS accessKeyId/secretAccessKey
- Java Awssdk S3 Liệt kê các đối tượng trong S3 Bucket
- Lưu trữ (host) một Website tĩnh trên Amazon S3
- Vô hiệu hoá bộ nhớ đệm của CloudFront với Java
- Tạo DigitalOcean Spaces Access Key
- Java Awssdk Các Credentials Provider thông dụng
- Java Awssdk Tạo và sử dụng ProfileCredentialsProvider
- Java Awssdk Tạo và sử dụng EnvironmentVariableCredentialsProvider
- Java Awssdk 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
- Tạo một vùng chứa Amazon S3 (S3 Bucket)
- Các quy tắc chuyển hướng cho S3 Static Website
- Cấu hình tên miền tuỳ chỉnh cho website tĩnh Amazon S3
- Tạo bản phân phối CloudFront cho S3 Bucket
- Cấu hình các trang phản hồi lỗi cho CloudFront
- Tạo các chính sách S3 Bucket
- Công cụ tạo các chính sách cho AWS - policygen
- So sánh Amazon S3 Rest API Endpoint và S3 Web Endpoint
- Chuyển hướng trong S3 Website với x-amz-website-redirect-location
- Di chuyển (migrate) dịch vụ DNS tới Amazon Route 53
- Chuyển (transfer) đăng ký tên miền tới Amazon Route 53
- Yêu cầu chứng chỉ SSL từ Amazon ACM
Show More