openplanning

Java Awssdk Tạo và sử dụng EnvironmentVariableCredentialsProvider

  1. Thư viện
  2. EnvironmentVariableCredentialsProvider
  3. Ví dụ
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

Show More