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

La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-supportdicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare AWS SDK for Java 2.xa ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

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 Tentano di trovare credenziali temporanee utilizzando la catena di fornitori di credenziali predefinita implementata dalla classe D. efaultAWSCredentials ProviderChain La catena di provider delle credenziali predefinita cerca le credenziali in questo ordine:

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

  2. Proprietà del sistema Java -aws.accessKeyId, aws.secretKey (ma nonaws.secretAccessKey), 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 di profili di credenziali predefinito, in genere situato in ~/.aws/credentials (la posizione può variare in base alla piattaforma) e condiviso da molti utenti AWS SDKs e da. AWS CLI AWS SDK for Java Utilizza il ProfileCredentialsProviderper caricare 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 ECS contenitore Amazon: caricate da Amazon ECS se la variabile di ambiente AWS_CONTAINER_CREDENTIALS_RELATIVE_URI è impostata. Le AWS SDK for Java utilizza ContainerCredentialsProviderper caricare queste credenziali. È possibile specificare l'indirizzo IP per questo valore.

  6. Credenziali del profilo di istanza: utilizzate sulle EC2 istanze e fornite tramite il servizio di Amazon EC2 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. EC2ContainerCredentialsProviderWrapperPer ulteriori informazioni, vedere.

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 da. 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 strumenti AWS SDKs e strumenti ufficialmente supportati (inclusi i AWS CLI e i AWS Tools for Windows PowerShell). Per modificare solo il profilo di un'applicazione Java, potete aws.profile invece utilizzare la proprietà 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 conCLI: è necessario modificare il file manualmente se si desidera utilizzarli. Per ulteriori informazioni sul file di configurazione e sui campi disponibili, vedere Configuring the AWS Command Line Interface nella Guida per l'utente. AWS Command Line Interface

Caricare le credenziali

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

A tale scopo, si crea un'istanza di un Servizio AWS client senza fornire esplicitamente le credenziali al generatore, 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 SDK utilizzerà per la connessione.

  2. Crea un oggetto AWSStaticCredentialsProvidercon l'oggetto. 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