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à.
Modifiche nell'utilità di metadati EC2 dalla versione 1 alla versione 2
Questo argomento descrive in dettaglio le modifiche all'utilità di metadati SDK per Java Amazon Elastic Compute Cloud (EC2) dalla versione 1 (v1) alla versione 2 (v2).
High-level modifiche
| Modifica | v1 | v2 |
|---|---|---|
|
dipendenze Maven |
|
|
| Nome pacchetto |
com.amazonaws.util |
software.amazon.awssdk.imds |
| Approccio di istanziazione |
Usa metodi di utilità statici; nessuna istanziazione:
|
Usa un metodo di fabbrica statico:
Oppure usa un approccio costruttore:
|
| Tipi di clienti | Metodi di utilità solo sincroni: EC2MetadataUtils |
Sincrono: Asincrono: |
1 Ultima versione .
3 Notate la dichiarazione del apache-client modulo per la v2. La versione 2 dell'utilità di metadati EC2 richiede un'implementazione dell'interfaccia per il client di metadati sincrono o dell'SdkHttpClientinterfaccia per il client di metadati asincrono. SdkAsyncHttpClient La Configurare i client HTTP in AWS SDK for Java 2.x sezione mostra l'elenco dei client HTTP che è possibile utilizzare.
Richiesta di metadati
Nella v1, si utilizzano metodi statici che non accettano parametri per richiedere i metadati per una risorsa EC2. Al contrario, è necessario specificare il percorso della risorsa EC2 come parametro nella v2. La tabella seguente mostra i diversi approcci.
| v1 | v2 |
|---|---|
|
|
Fate riferimento alle categorie di metadati delle istanze per trovare il percorso da fornire per richiedere un metadato.
Nota
Quando utilizzi un client di metadati di istanza in v2, dovresti mirare a utilizzare lo stesso client per tutte le richieste di recupero dei metadati.
Modifiche del comportamento
Dati JSON
Su EC2, l'Instance Metadata Service (IMDS) eseguito localmente restituisce alcuni metadati come stringhe in formato JSON. Uno di questi esempi sono i metadati dinamici di un documento di identità dell'istanza. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html
L'API v1 contiene metodi separati per ogni metadato di identità dell'istanza, mentre l'API v2 restituisce direttamente la stringa JSON. Per lavorare con la stringa JSON, puoi utilizzare l'API Document
La tabella seguente confronta il modo in cui recuperate i metadati di un documento di identità dell'istanza nelle versioni 1 e 2.
| Caso d’uso | v1 | v2 |
|---|---|---|
| Recupera la regione |
|
|
| Recupera l'id dell'istanza |
|
|
| Recupera il tipo di istanza |
|
|
Differenze di risoluzione degli endpoint
La tabella seguente mostra le posizioni che l'SDK controlla per risolvere l'endpoint in IMDS. Le posizioni sono elencate con priorità decrescente.
| v1 | v2 |
|---|---|
Proprietà del sistema: com.amazonaws.sdk.ec2MetadataServiceEndpointOverride |
Metodo di configurazione del Client Builder: endpoint(...) |
Variabile di ambiente: AWS_EC2_METADATA_SERVICE_ENDPOINT |
Proprietà del sistema: aws.ec2MetadataServiceEndpoint |
Valore predefinito: http://169.254.169.254 |
File di configurazione: ~.aws/config con l'impostazione ec2_metadata_service_endpoint |
Valore associato a risolto endpoint-mode |
|
Valore predefinito: http://169.254.169.254 |
Risoluzione degli endpoint in v2
Quando si imposta esplicitamente un endpoint utilizzando il generatore, il valore di tale endpoint ha la priorità su tutte le altre impostazioni. Quando viene eseguito il codice seguente, la proprietà di aws.ec2MetadataServiceEndpoint sistema e l'ec2_metadata_service_endpointimpostazione del file di configurazione vengono ignorate se esistono.
Ec2MetadataClient client = Ec2MetadataClient
.builder()
.endpoint(URI.create("endpoint.to.use"))
.build();
Endpoint-mode
Con v2, è possibile specificare una modalità endpoint per configurare il client di metadati in modo che utilizzi i valori degli endpoint predefiniti per IPv4 o IPv6. Endpoint-mode non è disponibile per la versione v1. Il valore predefinito utilizzato per IPv4 è http://169.254.169.254 e http://[fd00:ec2::254] per IPv6.
La tabella seguente mostra i diversi modi in cui è possibile impostare la modalità endpoint in ordine di priorità decrescente.
| Valori possibili | ||
|---|---|---|
Metodo di configurazione del Client Builder: endpointMode(...) |
|
EndpointMode.IPV4,
EndpointMode.IPV6 |
| Proprietà del sistema | aws.ec2MetadataServiceEndpointMode |
IPv4, IPv6 (il caso non ha importanza) |
File di configurazione: ~.aws/config |
ec2_metadata_service_endpointImpostazione |
IPv4, IPv6 (il caso non ha importanza) |
| Non specificato nei modi precedenti | Viene utilizzato IPv4 |
In che modo l'SDK risolve l'endpoint o la modalità endpoint nella v2
-
L'SDK utilizza il valore impostato nel codice nel client builder e ignora qualsiasi impostazione esterna. Poiché l'SDK genera un'eccezione se entrambi
endpointendpointModevengono richiamati nel client builder, l'SDK utilizza il valore dell'endpoint in base al metodo utilizzato. -
Se non imposti un valore nel codice, l'SDK cerca una configurazione esterna, prima per le proprietà del sistema e poi per un'impostazione nel file di configurazione.
-
L'SDK verifica innanzitutto il valore di un endpoint. Se viene trovato un valore, viene utilizzato.
-
Se l'SDK non ha ancora trovato un valore, cerca le impostazioni della modalità endpoint.
-
-
Infine, se l'SDK non trova impostazioni esterne e non hai configurato il client di metadati nel codice, l'SDK utilizza il valore IPv4 di.
http://169.254.169.254
IMDSv2
Amazon EC2 definisce due approcci per accedere ai metadati delle istanze:
-
Instance Metadata Service versione 1 (IMDSv1): approccio Request/response
-
Instance Metadata Service versione 2 (IMDSv2) — approccio Session-oriented
La tabella seguente confronta il funzionamento degli SDK Java con IMDS.
| v1 | v2 |
|---|---|
| IMDSv2 viene utilizzato per impostazione predefinita | Usa sempre IMDSv2 |
| Tenta di recuperare un token di sessione per ogni richiesta e ricorre a IMDSv1 se non riesce a recuperare un token di sessione | Mantiene un token di sessione in una cache interna che viene riutilizzato per più richieste |
L'SDK per Java 2.x supporta solo IMDSv2 e non ricorre a IMDSv1.
Differenze di configurazione
La tabella seguente elenca le diverse opzioni di configurazione.
| Configurazione | v1 | v2 |
|---|---|---|
| Tentativi | Configurazione non disponibile | Configurabile tramite il metodo builder retryPolicy(...) |
| HTTP | Timeout di connessione configurabile tramite la AWS_METADATA_SERVICE_TIMEOUT variabile di ambiente. L'impostazione predefinita è 1 secondo. |
Configurazione disponibile passando un client HTTP al metodo builderhttpClient(...). Il timeout di connessione predefinito per i client HTTP è di 2 secondi. |
Esempio di configurazione HTTP v2
L'esempio seguente mostra come configurare il client di metadati. Questo esempio configura il timeout della connessione e utilizza il client HTTP Apache.
SdkHttpClient httpClient = ApacheHttpClient.builder() .connectionTimeout(Duration.ofSeconds(1)) .build(); Ec2MetadataClient imdsClient = Ec2MetadataClient.builder() .httpClient(httpClient) .build();