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á.
Cadeia de provedores de credenciais padrão no AWS SDK for Java 2.x
A cadeia de provedores de credenciais padrão na pesquisa AWS SDK for Java 2.x automaticamente as AWS credenciais em uma sequência predefinida de locais, permitindo que os aplicativos se autentiquem Serviços da AWS sem especificar explicitamente as fontes de credenciais.
A cadeia de fornecedores de credenciais padrão é implementada pela DefaultCredentialsProvider
Para usar a cadeia de provedores de credenciais padrão para fornecer credenciais temporárias, crie um criador de clientes de serviço, mas não especifique um provedor de credenciais. O trecho de código a seguir cria um DynamoDbClient
que usa a cadeia de fornecedores de credenciais padrão para localizar e recuperar as configurações.
// Any external Region configuration is overridden. // The SDK uses the default credentials provider chain because no specific credentials provider is specified. Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build();
Ordem de recuperação das configurações de credenciais
A cadeia de fornecedores de credenciais padrão do SDK para Java 2.x pesquisa a configuração em seu ambiente usando uma sequência predefinida.
-
Propriedades do sistema Java
-
O SDK usa a SystemPropertyCredentialsProvider
classe para carregar credenciais temporárias das propriedades aws.accessKeyId
,aws.secretAccessKey
, e do sistemaaws.sessionToken
Java.nota
Para mais informações sobre como definir as propriedades de sistema do Java, consulte o tutorial Propriedades do sistema
no site Tutoriais do Java oficial.
-
-
Variáveis de ambiente
-
O SDK usa a EnvironmentVariableCredentialsProvider
classe para carregar credenciais temporárias das variáveis de AWS_SESSION_TOKEN
ambienteAWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
, e.
-
-
Token de identidade da Web e ARN da função do IAM
-
O SDK usa a WebIdentityTokenFileCredentialsProvider
classe para carregar credenciais assumindo uma função usando um token de identidade da web. -
O provedor de credenciais procura as seguintes variáveis de ambiente ou propriedades do sistema JVM:
-
AWS_WEB_IDENTITY_TOKEN_FILE or
aws.webIdentityTokenFile
-
AWS_ROLE_ARN
ouaws.roleArn
-
AWS_ROLE_SESSION_NAME
ouaws.roleSessionName
(opcional)
-
-
Depois que o SDK adquire os valores, ele chama o AWS Security Token Service (STS) e usa as credenciais temporárias que retorna para assinar as solicitações.
-
Ambientes de tempo de execução, como o Amazon Elastic Kubernetes Service (EKS), disponibilizam automaticamente tokens de identidade da web, permitindo que os aplicativos obtenham AWS SDKs credenciais temporárias. AWS
-
-
Os arquivos
credentials
econfig
compartilhados-
O SDK usa o ProfileCredentialsProvider
para carregar as configurações de login único do IAM Identity Center ou credenciais temporárias do [default]
perfil nos arquivos compartilhados.credentials
config
O Guia de referência do AWS SDKs and Tools tem informações detalhadas sobre como o SDK for Java funciona com o token de login único do IAM Identity Center para obter credenciais temporárias que o SDK usa para chamar. Serviços da AWS
nota
Os
config
arquivoscredentials
e são compartilhados por várias AWS SDKs ferramentas. Para obter mais informações, consulte O. aws/credentials and .aws/configarquivos no Guia de referência de ferramentas AWS SDKs e ferramentas. -
Como um perfil no compartilhado
credentials
e nosconfig
arquivos pode conter muitos conjuntos diferentes de configurações, elesProfileCredentialsProvider
delegam a uma série de outros provedores para procurar as configurações no[default]
perfil:-
Credenciais básicas (classe
StaticCredentialsProvider
): quando o perfil contémaws_access_key_id
e.aws_secret_access_key
-
Credenciais da sessão (classe
StaticSessionCredentialsProvider
): quando o perfil contémaws_access_key_id
aws_secret_access_key
, e.aws_session_token
-
Credenciais do processo (classe
ProcessCredentialsProvider
): quando o perfil contémcredential_process
. -
Credenciais de SSO (classe
SsoCredentialsProvider
): quando o perfil contém propriedades relacionadas ao SSO, como,.sso_role_name
sso_account_id
-
Credenciais do token de identidade da Web (classe
WebIdentityTokenCredentialsProvider
): quando o perfil contémrole_arn
e.web_identity_token_file
-
Credenciais baseadas em função com perfil de origem (classe
StsAssumeRoleCredentialsProvider
): quando o perfil contém e.role_arn
source_profile
-
Credenciais baseadas em função com fonte de credencial (classe
StsAssumeRoleWithSourceCredentialsProvider
): quando o perfil contém e.role_arn
credential_source
-
Quando
credential_source = Environment
: Ele usa uma cadeia deSystemPropertyCredentialsProvider
eEnvironmentVariableCredentialsProvider
-
Quando
credential_source = Ec2InstanceMetadata
: Ele usaInstanceProfileCredentialsProvider
-
Quando
credential_source = EcsContainer
: Ele usaContainerCredentialsProvider
-
-
-
-
Amazon ECS credenciais de contêiner
-
O SDK usa a ContainerCredentialsProvider
classe para carregar credenciais temporárias usando as seguintes variáveis de ambiente: -
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
ouAWS_CONTAINER_CREDENTIALS_FULL_URI
-
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
ouAWS_CONTAINER_AUTHORIZATION_TOKEN
-
O agente de contêiner do ECS define automaticamente a variável de
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
ambiente, que aponta para o endpoint de credenciais do ECS. As outras variáveis de ambiente geralmente são definidas em cenários específicos em que o endpoint padrão da credencial ECS não é usado. -
-
Amazon EC2 credenciais fornecidas pela função IAM da instância
-
O SDK usa a InstanceProfileCredentialsProvider
classe para carregar credenciais temporárias do serviço de Amazon EC2 metadados.
-
-
Se o SDK não conseguir encontrar as configurações necessárias por meio de todas as etapas listadas acima, ele lançará uma exceção com uma saída semelhante à seguinte:
software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(), ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()])
Use o código DefaultCredentialsProvider
in
Você pode usar explicitamente a cadeia de provedores de credenciais padrão em seu código. Funcionalmente, isso equivale a você não especificar nenhum provedor de credenciais, já que o SDK usa por padrão. DefaultCredentialsProvider
No entanto, usá-lo explicitamente pode tornar seu código mais legível e autodocumentado. Isso mostra claramente sua intenção de usar a cadeia de credenciais padrão.
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; public class ExplicitDefaultCredentialsExample { public static void main(String[] args) { // Explicitly create the DefaultCredentialsProvider. DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider .builder().build(); // Use it with any service client. S3Client s3Client = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(defaultCredentialsProvider) .build(); // Now you can use the client with the default credentials chain. s3Client.listBuckets(); } }
Ao criar o provedor de credenciais padrão, você pode fornecer mais configurações:
DefaultCredentialsProvider customizedProvider = DefaultCredentialsProvider.builder() .profileName("custom-profile") // Use a specific profile if the chain gets to the `ProfileCredentialsProvider` stage. .asyncCredentialUpdateEnabled(true) // Enable async credential updates. .build();
Essa abordagem oferece mais controle e, ao mesmo tempo, fornece a conveniência da cadeia de credenciais padrão.