Forneça credenciais temporárias ao AWS SDK for Java - AWS SDK for Java 1.x

Anunciamos o próximo end-of-support para AWS SDK for Java (v1). Recomendamos migrar para o AWS SDK for Java v2. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

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 Default. AWSCredentialsProviderChain A cadeia de fornecedores de credenciais padrão procura credenciais nesta ordem:

  1. Variáveis de ambiente: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e AWS_SESSION_TOKEN. O AWS SDK for Java usa a EnvironmentVariableCredentialsProviderclasse para carregar essas credenciais.

  2. Propriedades do sistema Java: aws.accessKeyId, aws.secretKey e aws.sessionToken. O AWS SDK for Java usa o SystemPropertiesCredentialsProviderpara carregar essas credenciais.

  3. Credenciais de token de identidade da Web do ambiente ou contêiner.

  4. O arquivo de perfis de credenciais padrão - normalmente localizado em ~/.aws/credentials (o local pode variar de acordo com a plataforma) e compartilhado por muitos dos AWS SDKs e pelo. 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.

  5. Credenciais de contêiner do Amazon ECS: carregadas pelo 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.

  6. Credenciais de perfil de instância — usadas em instâncias do EC2 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 EC2 ContainerCredentialsProviderWrapper 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:

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 pelo SDK.

Por exemplo, no Linux, no macOS ou no Unix, você executaria o comando a seguir a fim de 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 para todos os AWS SDKs e ferramentas oficialmente compatíveis (incluindo o AWS CLI e o 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 a CLI. Você deverá 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 que definir as credenciais temporárias, o SDK as 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

  1. 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 o SDK usará para a conexão.

  2. Crie um AWSStaticCredentialsProvidercom o AWSCredentials objeto.

  3. 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();

Mais informações