

O AWS SDK para Java 1.x chegou end-of-support em 31 de dezembro de 2025. Recomendamos que você migre para o [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) para continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.

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 para Java
<a name="credentials"></a>

Para fazer solicitações Amazon Web Services, você deve fornecer credenciais AWS temporárias para AWS SDK para 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
<a name="credentials-default"></a>

[Quando você inicializa um novo cliente de serviço sem fornecer nenhum argumento, ele AWS SDK para Java tenta encontrar credenciais temporárias usando a *cadeia de fornecedores de credenciais padrão* implementada pela classe Default. AWSCredentials ProviderChain](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html) A cadeia de fornecedores de credenciais padrão procura credenciais nesta ordem:

1.  **Variáveis de ambiente**: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_KEY` ou `AWS_SECRET_ACCESS_KEY` e `AWS_SESSION_TOKEN`. O AWS SDK para Java usa a [EnvironmentVariableCredentialsProvider](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/EnvironmentVariableCredentialsProvider.html)classe para carregar essas credenciais.

1.  **Propriedades do sistema Java**: `aws.accessKeyId`, `aws.secretKey` (mas não `aws.secretAccessKey`) e `aws.sessionToken`. O AWS SDK para Java usa o [SystemPropertiesCredentialsProvider](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/SystemPropertiesCredentialsProvider.html)para carregar essas credenciais.

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

1.  **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 para Java usa o [ProfileCredentialsProvider](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/profile/ProfileCredentialsProvider.html)para 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](#credentials-file-format).

1.  **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 para Java usa o [ContainerCredentialsProvider](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/ContainerCredentialsProvider.html)para carregar essas credenciais. É possível especificar o endereço IP para esse valor.

1.  **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 para Java usa o [InstanceProfileCredentialsProvider](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/InstanceProfileCredentialsProvider.html)para 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](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/EC2ContainerCredentialsProviderWrapper.html) para obter mais informações.

### Configurar credenciais temporárias
<a name="setting-credentials"></a>

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](setup-credentials.md#setup-credentials-setting).
+ Para definir as *propriedades de sistema* do Java, consulte o tutorial [Propriedades do sistema](http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html) no site *Tutoriais do Java* oficial.
+ Para configurar e usar *credenciais de perfil de instância* com suas instâncias do EC2, consulte Como [usar funções do IAM para conceder acesso a AWS recursos em](java-dg-roles.md). Amazon EC2

### Configurar um perfil de credenciais alternativo
<a name="setting-an-alternate-credentials-profile"></a>

O AWS SDK para 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 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
<a name="setting-an-alternate-credentials-file-location"></a>

O AWS SDK para 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 para 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
<a name="w3aab9c15b9c11b7b1"></a>
+ 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`
<a name="credentials-file-format"></a>

Seguindo as [instruções na Configuração básica](signup-create-iam-user.md#setup-temp-creds) 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) no Guia do AWS Command Line Interface Usuário.

### Carregar credenciais
<a name="loading-credentials"></a>

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
<a name="credentials-specify-provider"></a>

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 interface de [AWSCredentialsprovedor](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/AWSCredentialsProvider.html) como entrada. O exemplo a seguir mostra como usar credenciais de *ambiente* mais especificamente.

```
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                       .withCredentials(new EnvironmentVariableCredentialsProvider())
                       .build();
```

[Para ver a lista completa de provedores AWS SDK para Java de credenciais e cadeias de provedores fornecidos, consulte **Todas as classes de implementação conhecidas** no AWSCredentials provedor.](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/AWSCredentialsProvider.html)

**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](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/AWSCredentialsProviderChain.html)

## Especificar explicitamente credenciais temporárias
<a name="credentials-explicit"></a>

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 [BasicSessionCredentials](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/BasicSessionCredentials.html)classe 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.

1. Crie um [AWSStaticCredentialsProvider](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/AWSStaticCredentialsProvider.html)com o `AWSCredentials` objeto.

1. Configure o compilador de cliente com o `AWSStaticCredentialsProvider` e compilar o cliente.

Veja um exemplo do 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
<a name="more-info"></a>
+  [Inscreva-se AWS e crie um usuário do IAM](signup-create-iam-user.md) 
+  [Configurar AWS credenciais e região para desenvolvimento](setup-credentials.md) 
+  [Usando funções do IAM para conceder acesso a AWS recursos em Amazon EC2](java-dg-roles.md) 