Я хочу обновить код для одного из моих устаревших приложений. Приложение использует библиотеку AWS S3 в версии 1.11.119, которой несколько лет . Мне удалось войти в S3, используя предоставленные учетные данные, но теперь мне нужно избегать использования жестко закодированных учетных данных, и я должен использовать следующие учетные данные:
Учетные данные профиля экземпляра - Это используется на Amazon Инстансы EC2 и доставляются через службу метаданных Amazon EC2. AWS SDK для Java использует InstanceProfileCredentialsProvider для загрузки этих учетных данных.
Я хотел бы спросить, какие методы мне следует использовать с комбинацией старой AWS библиотеки для чтения учетных данных профиля из экземпляра EC2 вместо жестко запрограммированных ключей. Я нашел эту ссылку , но я не уверен, что это правильный подход.
Я применил обновленный метод, но я не знаю, что это правильно для автоматического получения учетных данных из экземпляра EC2:
@SuppressWarnings("deprecation")
public static AmazonS3 logInToAmazonS3() {
Regions clientRegion = Regions.DEFAULT_REGION;
String bucketName = "my-bucket-name";
AmazonS3 awsS3 = AmazonS3ClientBuilder.standard().withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();
return awsS3;
}
Старый код метода с использованием жестко заданных учетных данных.
/**
* Login to AWS S3.
* Should be changed to Instance profile credentials
* @return Logged Amazon S3 Client
*/
@SuppressWarnings("deprecation")
public static AmazonS3 logInToAmazonS3() {
AWSCredentials awsCredentials = new BasicAWSCredentials(BCSConst.CREDENTIALS_ID, BCSConst.CREDENTIALS_KEY);
AmazonS3 awsS3 = new AmazonS3Client(awsCredentials/*, clientConfig*/);
}
<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.119</version>
</dependency>
Спасибо за любой совет.