Fornire credenziali temporanee a AWS SDK for Java - AWS SDK for Java 1.x

Abbiamo annunciato l'imminente versione end-of-support di AWS SDK for Java (v1). Ti consigliamo di migrare alla AWS SDK for Java v2. Per date, dettagli aggiuntivi e informazioni su come effettuare la migrazione, consulta l'annuncio collegato.

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à.

Fornire credenziali temporanee a AWS SDK for Java

Per effettuare richieste a Amazon Web Services, è necessario fornire credenziali AWS temporanee AWS SDK for Java da utilizzare quando chiama i servizi. Questa operazione può essere eseguita nei modi seguenti:

  • Utilizzando la catena di provider delle credenziali predefinita (scelta consigliata).

  • Utilizzando un provider di credenziali o catena di provider specifica (o creando la propria).

  • Fornisci tu stesso le credenziali temporanee nel codice.

Utilizzo della catena di provider delle credenziali predefinita

Quando inizializzate un nuovo client di servizio senza fornire alcun argomento, AWS SDK for Java tenta di trovare credenziali temporanee utilizzando la catena di fornitori di credenziali predefinita implementata dalla classe Default. AWSCredentialsProviderChain La catena di provider delle credenziali predefinita cerca le credenziali in questo ordine:

  1. Variabili di ambiente -AWS_ACCESS_KEY_ID, e. AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS SDK for Java utilizza la EnvironmentVariableCredentialsProviderclasse per caricare queste credenziali.

  2. Proprietà del sistema Java - aws.accessKeyIdaws.secretKey, eaws.sessionToken. li AWS SDK for Java utilizza SystemPropertiesCredentialsProviderper caricare queste credenziali.

  3. Credenziali Web Identity Token dall'ambiente o dal contenitore.

  4. Il file dei profili di credenziali predefinito, generalmente situato in ~/.aws/credentials (la posizione può variare in base alla piattaforma) e condiviso da molti AWS SDK e da. AWS CLI Lo AWS SDK for Java utilizza per ProfileCredentialsProvidercaricare queste credenziali.

    È possibile creare un file di credenziali utilizzando il aws configure AWS CLI comando fornito da oppure modificarlo con un editor di testo. Per informazioni sul formato del file delle credenziali, consulta Formato del file AWS delle credenziali.

  5. Credenziali del contenitore Amazon ECS: caricate da Amazon ECS se la variabile AWS_CONTAINER_CREDENTIALS_RELATIVE_URI di ambiente è impostata. Le AWS SDK for Java utilizza per caricare queste ContainerCredentialsProvidercredenziali. È possibile specificare l'indirizzo IP per questo valore.

  6. Credenziali del profilo di istanza: utilizzate sulle istanze EC2 e fornite tramite il Amazon EC2 servizio di metadati. Le AWS SDK for Java utilizza per caricare queste InstanceProfileCredentialsProvidercredenziali. È possibile specificare l'indirizzo IP per questo valore.

    Nota

    Le credenziali del profilo di istanza vengono utilizzate solo se non AWS_CONTAINER_CREDENTIALS_RELATIVE_URI sono impostate. Per ulteriori informazioni, consulta EC2 ContainerCredentialsProviderWrapper.

Imposta credenziali temporanee

Per poter utilizzare le credenziali AWS temporanee, devono essere impostate in almeno una delle posizioni precedenti. Per informazioni sull'impostazione delle credenziali, consulta i seguenti argomenti:

Imposta un profilo di credenziali alternativo

AWS SDK for Java Utilizza il profilo predefinito per impostazione predefinita, ma esistono modi per personalizzare il profilo proveniente dal file delle credenziali.

È possibile utilizzare la variabile AWS di ambiente Profile per modificare il profilo caricato dall'SDK.

Ad esempio, su Linux, macOS o Unix è necessario eseguire il comando seguente per modificare il profilo in MyProfile.

export AWS_PROFILE="myProfile"

In Windows si utilizzerebbe quanto segue.

set AWS_PROFILE="myProfile"

L'impostazione della variabile di AWS_PROFILE ambiente influisce sul caricamento delle credenziali per tutti gli AWS SDK e gli strumenti ufficialmente supportati (inclusi gli AWS CLI e i AWS Tools for Windows PowerShell). Per modificare solo il profilo di un'applicazione Java, potete invece utilizzare la proprietà aws.profile di sistema.

Nota

La variabile di ambiente prevale sulla proprietà di sistema.

Imposta una posizione alternativa per il file delle credenziali

AWS SDK for Java Carica automaticamente le credenziali AWS temporanee dalla posizione predefinita del file delle credenziali. Tuttavia, puoi anche specificare il percorso impostando la variabile di ambiente AWS_CREDENTIAL_PROFILES_FILE con il percorso completo al file delle credenziali.

È possibile utilizzare questa funzionalità per modificare temporaneamente la posizione in cui AWS SDK for Java cerca il file delle credenziali (ad esempio, impostando questa variabile con la riga di comando). In alternativa, puoi impostare la variabile di ambiente nell'ambiente utente o di sistema per modificarla a livello di utente o di sistema.

Per ignorare il percorso del file delle credenziali predefinito

  • Imposta la variabile di AWS_CREDENTIAL_PROFILES_FILE ambiente sulla posizione del file delle AWS credenziali.

    • Su Linux, macOS o Unix, usa:

      export AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
    • In Windows, usa:

      set AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file

Credentialsformato di file

Seguendo le istruzioni riportate nella configurazione di base di questa guida, il file delle credenziali dovrebbe avere il seguente formato di base.

[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>

Il nome del profilo è specificato tra parentesi quadre (ad esempio, [default]), seguito dai campi configurabili nel profilo come coppie chiave-valore. Nel credentials file possono essere presenti più profili, che possono essere aggiunti o modificati selezionando aws configure --profile PROFILE_NAME il profilo da configurare.

È possibile specificare campi aggiuntivimetadata_service_timeout, ad esempio emetadata_service_num_attempts. Questi non sono configurabili con la CLI: è necessario modificare il file manualmente se si desidera utilizzarli. Per ulteriori informazioni sul file di configurazione e sui campi disponibili, vedere Configurazione di AWS Command Line Interface nella Guida per l'utente. AWS Command Line Interface

Caricare le credenziali

Dopo aver impostato le credenziali temporanee, l'SDK le carica utilizzando la catena di provider di credenziali predefinita.

A tale scopo, create un'istanza di un Servizio AWS client senza fornire esplicitamente le credenziali al builder, come segue.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();

Specificate un fornitore di credenziali o una catena di fornitori

Puoi specificare un provider delle credenziali diverso dalla catena di provider delle credenziali predefinita utilizzando il generatore client.

Fornisci un'istanza di un fornitore di credenziali o di una catena di provider a un client builder che accetta un'AWSCredentialsProviderinterfaccia come input. Nell'esempio seguente viene mostrato come utilizzare specificatamente le credenziali ambiente.

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

Per l'elenco completo dei provider di credenziali e delle catene di provider AWS SDK for Java forniti, consulta All Known Implementation Classes in. AWSCredentialsProvider

Nota

È possibile utilizzare questa tecnica per fornire fornitori di credenziali o catene di provider create utilizzando il proprio provider di credenziali che implementa l'AWSCredentialsProviderinterfaccia o sottoclassando la classe. AWSCredentialsProviderChain

Specificate esplicitamente le credenziali temporanee

Se la catena di credenziali predefinita o un provider o una catena di fornitori specifici o personalizzati non funzionano per il codice, puoi impostare le credenziali fornite in modo esplicito. Se hai recuperato credenziali temporanee utilizzando AWS STS, usa questo metodo per specificare le credenziali di accesso. AWS

  1. Crea un'istanza della BasicSessionCredentialsclasse e forniscile la chiave di AWS accesso, la chiave AWS segreta e il token di AWS sessione che l'SDK utilizzerà per la connessione.

  2. Crea un oggetto AWSStaticCredentialsProvider. AWSCredentials

  3. Configurare il generatore client con AWSStaticCredentialsProvider e creare il client.

Di seguito è riportato un esempio.

BasicSessionCredentials awsCreds = new BasicSessionCredentials("access_key_id", "secret_key_id", "session_token"); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build();

Ulteriori informazioni