

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 em código usando o AWS SDK for Java 2.x
<a name="credentials-explicit"></a>

Se a cadeia de credenciais padrão, um provedor personalizado ou específico ou a cadeia de fornecedores não funcionar para seu aplicativo, você poderá fornecer as credenciais temporárias diretamente no código. Elas podem ser [credenciais de função do IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html), conforme [descrito acima](credentials-temporary.md#credentials-temporary-from-portal), ou credenciais temporárias recuperadas de AWS Security Token Service ().AWS STS Se você recuperou credenciais temporárias usando AWS STS, forneça-as a um AWS service (Serviço da AWS) cliente conforme mostrado no exemplo de código a seguir.

1. Assuma um perfil chamando `StsClient.assumeRole()`.

1. Crie um [StaticCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/StaticCredentialsProvider.html)objeto e forneça o `AwsSessionCredentials` objeto a ele.

1. Configure o construtor de cliente de serviço com o `StaticCredentialsProvider` e construa o cliente.

O exemplo a seguir cria um cliente de serviço Amazon S3 usando credenciais temporárias retornadas por AWS STS para uma função assumida pelo IAM.

```
    // The AWS IAM Identity Center identity (user) who executes this method does not have permission to list buckets.
    // The identity is configured in the [default] profile.
    public static void assumeRole(String roleArn, String roleSessionName) {
        // The IAM role represented by the 'roleArn' parameter can be assumed by identities in two different accounts
        // and the role permits the user to only list buckets.

        // The SDK's default credentials provider chain will find the single sign-on settings in the [default] profile.
        // The identity configured with the [default] profile needs permission to call AssumeRole on the STS service.
        try {
            Credentials tempRoleCredentials;
            try (StsClient stsClient = StsClient.create()) {
                AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                        .roleArn(roleArn)
                        .roleSessionName(roleSessionName)
                        .build();

                AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
                tempRoleCredentials = roleResponse.credentials();
            }
            // Use the following temporary credential items for the S3 client.
            String key = tempRoleCredentials.accessKeyId();
            String secKey = tempRoleCredentials.secretAccessKey();
            String secToken = tempRoleCredentials.sessionToken();

            // List all buckets in the account associated with the assumed role
            // by using the temporary credentials retrieved by invoking stsClient.assumeRole().
            StaticCredentialsProvider staticCredentialsProvider = StaticCredentialsProvider.create(
                    AwsSessionCredentials.create(key, secKey, secToken));
            try (S3Client s3 = S3Client.builder()
                    .credentialsProvider(staticCredentialsProvider)
                    .build()) {
                List<Bucket> buckets = s3.listBuckets().buckets();
                for (Bucket bucket : buckets) {
                    System.out.println("bucket name: " + bucket.name());
                }
            }
        } catch (StsException | S3Exception e) {
            logger.error(e.getMessage());
            System.exit(1);
        }
    }
```

## Conjuntos de permissões
<a name="credentials-explicit-permission-set"></a>

O seguinte conjunto de permissões definido em Centro de Identidade do AWS IAM permite que a identidade (usuário) execute as duas operações a seguir:

1. A operação `GetObject` do Amazon Simple Storage Service.

1. A operação `AssumeRole` do AWS Security Token Service.

Sem assumir o perfil, o método `s3.listBuckets()` mostrado no exemplo falharia.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"s3:GetObject",
				"sts:AssumeRole"
			],
			"Resource": [
				"*"
			]
		}
	]
}
```

------

## Função assumida
<a name="credentials-explicit-role-to-assume"></a>

### Política de permissões do perfil assumido
<a name="credentials-explicit-role-policy"></a>

A política de permissões a seguir é anexada ao perfil assumido no exemplo anterior. Essa política de permissões permite listar todos os buckets na mesma conta do perfil.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

### Política de confiança do perfil assumido
<a name="credentials-explicit-trust-policy"></a>

A política de confiança a seguir é anexada ao perfil assumido no exemplo anterior. A política permite que o perfil seja assumido por identidades (usuários) em duas contas.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root",
                    "arn:aws:iam::555555555555:root"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}
```

------