Доступ к токену сеанса AWS из профиля с помощью DefaultCredentialsProvider

#aws-sts #aws-sdk-java-2.0 #aws-credentials

#aws-sts #aws-sdk-java-2.0 #aws-учетные данные

Вопрос:

Мой профиль 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 который не включает токен сеанса, только идентификатор ключа доступа и секретный ключ доступа.

Есть ли какой-либо способ получить полные учетные данные сеанса?

Ответ №1:

AWSCredentials — это интерфейс.

 public interface AwsCredentials {
    String accessKeyId();
    String secretAccessKey();
}
  

и это реализовано AwsBasicCredentials и AwsSessionCredentials.

В зависимости от того, установлен токен сеанса или нет, при вызове API resolveCredentials() вам будет возвращен соответствующий класс.

Ответ №2:

вместо использования AWSCredentials / AwsSessionCredentials почему вам не нравится использовать Aws4PresignerParams, он предоставит вам все три параметра (aws_session_token, aws_access_key_id и aws_secret_access_key).