La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-support
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:
-
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. -
Proprietà del sistema Java -
aws.accessKeyId
,aws.secretKey
(ma nonaws.secretAccessKey
), eaws.sessionToken
. li AWS SDK for Java utilizza SystemPropertiesCredentialsProviderper caricare queste credenziali. -
Credenziali Web Identity Token dall'ambiente o dal contenitore.
-
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. -
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. -
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:
-
Per specificare le credenziali nell'ambiente o nel file dei profili di credenziali predefinito, vedere. Configurazione di credenziali temporanee
-
Per impostare proprietà del sistema Java, consulta il tutorial sulle proprietà del sistema
nel sito Web dei tutorial Java ufficiale. -
Per configurare e utilizzare le credenziali del profilo di istanza con le tue EC2 istanze, vedi Utilizzo dei IAM ruoli per concedere l'accesso alle risorse su. AWS Amazon EC2
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
-
Credentials
formato 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'AWSCredentialsProvider
interfaccia 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
-
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.
-
Crea un oggetto AWSStaticCredentialsProvidercon l'oggetto.
AWSCredentials
-
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();