O AWS SDK for Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e chegará end-of-support
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Forneça credenciais temporárias ao AWS SDK for Java
Para fazer solicitações Amazon Web Services, você deve fornecer credenciais AWS temporárias para AWS SDK for Java que o use ao chamar os serviços. Isso pode ser feito das seguintes maneiras:
-
Use a cadeia de fornecedores de credenciais padrão (recomendado).
-
Use um fornecedor de credenciais específico ou uma cadeia de fornecedores (ou crie a própria).
-
Forneça você mesmo as credenciais temporárias em código.
Usar a cadeia de fornecedores de credenciais padrão
Quando você inicializa um novo cliente de serviço sem fornecer nenhum argumento, ele AWS SDK for Java tenta encontrar credenciais temporárias usando a cadeia de fornecedores de credenciais padrão implementada pela classe D. efaultAWSCredentials ProviderChain A cadeia de fornecedores de credenciais padrão procura credenciais nesta ordem:
-
Variáveis de ambiente -
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
,AWS_SECRET_KEY
ouAWS_SESSION_TOKEN
e. O AWS SDK for Java usa a EnvironmentVariableCredentialsProviderclasse para carregar essas credenciais. -
Propriedades do sistema Java -
aws.accessKeyId
,aws.secretKey
(mas nãoaws.secretAccessKey
)aws.sessionToken
e. O AWS SDK for Java usa o SystemPropertiesCredentialsProviderpara carregar essas credenciais. -
Credenciais de token de identidade da Web do ambiente ou contêiner.
-
O arquivo de perfis de credenciais padrão - normalmente localizado em
~/.aws/credentials
(a localização pode variar de acordo com a plataforma) e compartilhado por muitos dos AWS SDKs e pelos AWS CLI. O AWS SDK for Java usa o ProfileCredentialsProviderpara carregar essas credenciais.Você pode criar um arquivo de credenciais usando o
aws configure
comando fornecido pelo AWS CLI ou pode criá-lo editando o arquivo com um editor de texto. Para obter mais informações sobre o formato do arquivo de credenciais, consulte Formato do arquivo de credenciais da AWS. -
Credenciais de ECS contêiner da Amazon - carregadas da Amazon ECS se a variável de ambiente
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
estiver definida. O AWS SDK for Java usa o ContainerCredentialsProviderpara carregar essas credenciais. É possível especificar o endereço IP para esse valor. -
Credenciais de perfil de instância — usadas em EC2 instâncias e fornecidas por meio do serviço de Amazon EC2 metadados. O AWS SDK for Java usa o InstanceProfileCredentialsProviderpara carregar essas credenciais. É possível especificar o endereço IP para esse valor.
nota
As credenciais de perfil de instância serão usadas somente se
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
não estiver definido. Consulte EC2ContainerCredentialsProviderWrapper para obter mais informações.
Configurar credenciais temporárias
Para poder usar credenciais AWS temporárias, elas devem ser definidas em pelo menos um dos locais anteriores. Para obter informações sobre como configurar credenciais, consulte os seguintes tópicos:
-
Para especificar credenciais no ambiente ou no arquivo de perfis de credencial padrão, consulte Configurar credenciais temporárias.
-
Para definir as propriedades de sistema do Java, consulte o tutorial Propriedades do sistema
no site Tutoriais do Java oficial. -
Para configurar e usar as credenciais do perfil da instância com suas EC2 instâncias, consulte Como usar IAM funções para conceder acesso a AWS recursos em Amazon EC2.
Configurar um perfil de credenciais alternativo
O AWS SDK for Java usa o perfil padrão por padrão, mas há maneiras de personalizar qual perfil é originado do arquivo de credenciais.
Você pode usar a variável AWS de ambiente Profile para alterar o perfil carregado peloSDK.
Por exemplo, no Linux, macOS ou Unix, você executaria o comando a seguir para alterar o perfil para. myProfile
export AWS_PROFILE="myProfile"
No Windows, você usaria o seguinte.
set AWS_PROFILE="myProfile"
A configuração da variável de AWS_PROFILE
ambiente afeta o carregamento de credenciais de todas as ferramentas AWS SDKs e ferramentas oficialmente suportadas (incluindo a AWS CLI e a AWS Tools for Windows PowerShell). Para alterar somente o perfil de um aplicativo Java, você pode usar a propriedade do sistema aws.profile
em seu lugar.
nota
A variável de ambiente tem precedência sobre a propriedade do sistema.
Configurar um local de arquivo de credenciais alternativo
O AWS SDK for Java carrega credenciais AWS temporárias automaticamente do local padrão do arquivo de credenciais. No entanto, você também pode especificar o local configurando a variável de ambiente AWS_CREDENTIAL_PROFILES_FILE
com o caminho completo para o arquivo de credenciais.
Você pode usar esse recurso para alterar temporariamente o local em que ele AWS SDK for Java procura seu arquivo de credenciais (por exemplo, definindo essa variável com a linha de comando). Ou você pode definir a variável de ambiente no ambiente de usuário ou sistema a fim de alterá-la para o usuário ou o sistema.
Para substituir o local do arquivo de credenciais padrão
-
Defina a variável de
AWS_CREDENTIAL_PROFILES_FILE
ambiente para o local do seu arquivo de AWS credenciais.-
No Linux, macOS ou Unix, use:
export AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
-
No Windows, use:
set AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
-
Formato do arquivo Credentials
Seguindo as instruções na Configuração básica deste guia, seu arquivo de credenciais deve ter o seguinte formato básico.
[default] aws_access_key_id=
<value from AWS access portal>
aws_secret_access_key=<value from AWS access portal>
aws_session_token=<value from AWS access portal>
[profile2] aws_access_key_id=<value from AWS access portal>
aws_secret_access_key=<value from AWS access portal>
aws_session_token=<value from AWS access portal>
O nome do perfil é especificado entre colchetes (por exemplo, [default]
), seguido dos campos configuráveis nesse perfil como pares de chave/valor. Você pode ter vários perfis no arquivo credentials
, que podem ser adicionados ou editados usando-se aws configure --profile
PROFILE_NAME
para selecionar o perfil a ser configurado.
Você pode especificar campos adicionais, como metadata_service_timeout
e metadata_service_num_attempts
. Eles não são configuráveis com o CLI —você deve editar o arquivo manualmente se quiser usá-los. Para obter mais informações sobre o arquivo de configuração e seus campos disponíveis, consulte Configurando o AWS Command Line Interface no Guia do AWS Command Line Interface Usuário.
Carregar credenciais
Depois de definir as credenciais temporárias, ele as SDK carrega usando a cadeia de fornecedores de credenciais padrão.
Para fazer isso, você instancia um AWS service (Serviço da AWS) cliente sem fornecer explicitamente as credenciais ao construtor, da seguinte maneira.
AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();
Especificar um fornecedor de credenciais ou uma cadeia de fornecedores
Você pode especificar um fornecedor de credenciais diferente do fornecedor de credenciais padrão usando o compilador de cliente.
Você fornece uma instância de um provedor de credenciais ou cadeia de fornecedores para um criador de clientes que usa uma AWSCredentialsProviderinterface como entrada. O exemplo a seguir mostra como usar credenciais de ambiente mais especificamente.
AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new EnvironmentVariableCredentialsProvider()) .build();
Para obter a lista completa de provedores AWS SDK for Java de credenciais e cadeias de provedores fornecidos, consulte Todas as classes de implementação conhecidas em. AWSCredentialsProvider
nota
Você pode usar essa técnica para fornecer provedores de credenciais ou cadeias de provedores que você cria usando seu próprio provedor de credenciais que implementa a AWSCredentialsProvider
interface ou subclassificando a classe. AWSCredentialsProviderChain
Especificar explicitamente credenciais temporárias
Se a cadeia de credenciais padrão ou um fornecedor personalizado ou específico ou a cadeia de fornecedores não funcionar para o código, será possível definir credenciais fornecidas explicitamente. Se você recuperou credenciais temporárias usando AWS STS, use esse método para especificar as credenciais de acesso. AWS
-
Instancie a BasicSessionCredentialsclasse e forneça a ela a chave de AWS acesso, a chave AWS secreta e o token de AWS sessão que eles SDK usarão para a conexão.
-
Crie um AWSStaticCredentialsProvidercom o
AWSCredentials
objeto. -
Configure o compilador de cliente com o
AWSStaticCredentialsProvider
e compilar o cliente.
Veja um exemplo a seguir.
BasicSessionCredentials awsCreds = new BasicSessionCredentials("access_key_id", "secret_key_id", "session_token"); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build();