Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Catena di fornitori di credenziali predefinita in AWS SDK for Java 2.x
La catena di provider di credenziali predefinita cerca AWS SDK for Java 2.x automaticamente le AWS credenziali in una sequenza di posizioni predefinita, consentendo alle applicazioni di autenticarsi senza specificare esplicitamente Servizi AWS le fonti delle credenziali.
La catena di provider di credenziali predefinita è implementata dalla classe. DefaultCredentialsProvider
Per utilizzare la catena di fornitori di credenziali predefinita per fornire credenziali temporanee, create un service client builder ma non specificate un provider di credenziali. Il seguente frammento di codice crea una catena DynamoDbClient
che utilizza la catena di provider di credenziali predefinita per individuare e recuperare le impostazioni di configurazione.
// 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();
Ordine di recupero delle impostazioni delle credenziali
La catena di provider di credenziali predefinita di SDK for Java 2.x cerca la configurazione nell'ambiente utilizzando una sequenza predefinita.
-
Proprietà del sistema Java
-
L'SDK utilizza la SystemPropertyCredentialsProvider
classe per caricare credenziali temporanee dalle proprietà di sistema aws.accessKeyId
aws.secretAccessKey
, eaws.sessionToken
Java.Nota
Per informazioni su come impostare le proprietà del sistema Java, consultate il tutorial System Properties
sul sito Web ufficiale di Java Tutorials.
-
-
Variabili di ambiente
-
L'SDK utilizza la EnvironmentVariableCredentialsProvider
classe per caricare credenziali temporanee dalle variabili di ambiente AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
, e.AWS_SESSION_TOKEN
-
-
Token di identità Web e ARN del ruolo IAM
-
L'SDK utilizza la WebIdentityTokenFileCredentialsProvider
classe per caricare le credenziali assumendo un ruolo utilizzando un token di identità web. -
Il provider di credenziali cerca le seguenti variabili di ambiente o proprietà del sistema JVM:
-
AWS_WEB_IDENTITY_TOKEN_FILE or
aws.webIdentityTokenFile
-
AWS_ROLE_ARN
oaws.roleArn
-
AWS_ROLE_SESSION_NAME
oaws.roleSessionName
(opzionale)
-
-
Dopo aver acquisito i valori, l'SDK chiama AWS Security Token Service (STS) e utilizza le credenziali temporanee restituite per firmare le richieste.
-
Gli ambienti di runtime come Amazon Elastic Kubernetes Service (EKS) rendono automaticamente disponibili i token di identità Web, consentendo AWS SDKs alle applicazioni di ottenere credenziali temporanee. AWS
-
-
config
I file condivisi ecredentials
-
L'SDK li utilizza ProfileCredentialsProvider
per caricare le impostazioni Single Sign-on o le credenziali temporanee di IAM Identity Center dal [default]
profilo nei file condivisi e nei file.credentials
config
La AWS SDKs and Tools Reference Guide contiene informazioni dettagliate su come l'SDK for Java funziona con il token single sign-on IAM Identity Center per ottenere le credenziali temporanee che l'SDK utilizza per chiamare. Servizi AWS
Nota
I
config
filecredentials
e sono condivisi da vari e Tools. AWS SDKs Per ulteriori informazioni, vedere The. aws/credentials and .aws/configfile nella AWS SDKs and Tools Reference Guide. -
Poiché un profilo condiviso
credentials
econfig
i file possono contenere molti set diversi di impostazioni, i membriProfileCredentialsProvider
delegano a una serie di altri provider il compito di cercare le impostazioni all'interno del[default]
profilo:-
Credenziali di base (classe
StaticCredentialsProvider
): quando il profilo contieneaws_access_key_id
e.aws_secret_access_key
-
Credenziali di sessione (classe
StaticSessionCredentialsProvider
): quando il profilo contieneaws_access_key_id
aws_secret_access_key
, e.aws_session_token
-
Credenziali di processo (classe
ProcessCredentialsProvider
): quando il profilo contiene.credential_process
-
Credenziali SSO (classe
SsoCredentialsProvider
): quando il profilo contiene proprietà relative all'SSO come,.sso_role_name
sso_account_id
-
Credenziali del token di identità Web (classe
WebIdentityTokenCredentialsProvider
): quando il profilo contiene e.role_arn
web_identity_token_file
-
Credenziali basate sui ruoli con profilo di origine (classe
StsAssumeRoleCredentialsProvider
): quando il profilo contiene e.role_arn
source_profile
-
Credenziali basate sui ruoli con origine delle credenziali (classe
StsAssumeRoleWithSourceCredentialsProvider
): quando il profilo contiene e.role_arn
credential_source
-
Quando
credential_source = Environment
: utilizza una catena di eSystemPropertyCredentialsProvider
EnvironmentVariableCredentialsProvider
-
Quando
credential_source = Ec2InstanceMetadata
: utilizzaInstanceProfileCredentialsProvider
-
Quando
credential_source = EcsContainer
: utilizzaContainerCredentialsProvider
-
-
-
-
Amazon ECS credenziali del contenitore
-
L'SDK utilizza la ContainerCredentialsProvider
classe per caricare credenziali temporanee utilizzando le seguenti variabili di ambiente: -
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
oAWS_CONTAINER_CREDENTIALS_FULL_URI
-
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
oAWS_CONTAINER_AUTHORIZATION_TOKEN
-
L'agente contenitore ECS imposta automaticamente la variabile di
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
ambiente, che punta all'endpoint delle credenziali ECS. Le altre variabili di ambiente sono in genere impostate in scenari specifici in cui non viene utilizzato l'endpoint di credenziali ECS standard. -
-
Amazon EC2 istanza: credenziali fornite dal ruolo IAM
-
L'SDK utilizza la InstanceProfileCredentialsProvider
classe per caricare credenziali temporanee dal servizio di metadati. Amazon EC2
-
-
Se l'SDK non riesce a trovare le impostazioni di configurazione necessarie attraverso tutti i passaggi sopra elencati, genera un'eccezione con un output simile al seguente:
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()])
Usa il codice in DefaultCredentialsProvider
Puoi utilizzare in modo esplicito la catena di fornitori di credenziali predefinita nel tuo codice. Dal punto di vista funzionale, ciò equivale a non specificare affatto un provider di credenziali, poiché l'SDK lo utilizza per impostazione predefinita. DefaultCredentialsProvider
Tuttavia, utilizzarlo in modo esplicito può rendere il codice più leggibile e autodocumentante. Mostra chiaramente l'intenzione di utilizzare la catena di credenziali predefinita.
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(); } }
Quando crei il provider di credenziali predefinito puoi fornire ulteriori configurazioni:
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();
Questo approccio offre un maggiore controllo pur garantendo la comodità della catena di credenziali predefinita.