Доступ к токену сеанса AWS из профиля с помощью DefaultCredentialsProvider
Мой профиль AWS в ~/.aws/credentials
содержит учетные данные сеанса, созданные STS.
[default]
aws_session_token=XXX
aws_access_key_id=XXX
aws_secret_access_key=XXX
Я пытаюсь получить доступ к этим учетным данным с помощью AWS SDK Java v2
С использованием DefaultCredentialsProvider
или ProfileCredentialsProvider
находит их, но возвращаемый объект имеет тип AwsCredentials
скорее, чем AwsSessionCredentials
который не включает токен сеанса, только идентификатор ключа доступа и секретный ключ доступа.
Есть ли способ получить полные учетные данные сеанса?
3 ответа
AwsCredentials - это интерфейс.
public interface AwsCredentials {
String accessKeyId();
String secretAccessKey();
}
и его реализует AwsBasicCredentials и AwsSessionCredentials.
В зависимости от того, установлен ли токен сеанса или нет, соответствующий класс будет возвращен вам при вызове API resolveCredentials ().
Ниже приведен код, который можно использовать для получения учетных данных.
BasicSessionCredentials basicSessionCredentials = (BasicSessionCredentials) new ProfilesConfigFile().getCredentials(profile);
вместо использования AwsCredentials / AwsSessionCredentials, почему вам не нравится использовать Aws4PresignerParams, он предоставит вам все три параметра (aws_session_token, aws_access_key_id и aws_secret_access_key).