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à.
Configurazione degli endpoint client in AWS SDK for Java 2.x
L'SDK for Java 2.x offre diversi modi per configurare gli endpoint del servizio. Un endpoint è l'URL utilizzato dall'SDK per effettuare chiamate API. Servizi AWS Per impostazione predefinita, l'SDK determina automaticamente l'endpoint appropriato per ogni servizio in base a quello Regione AWS che hai configurato. Tuttavia, ci sono scenari in cui potresti dover personalizzare o sostituire questi endpoint:
-
Utilizzo di implementazioni di servizi locali o di terze parti (ad esempio) LocalStack
-
Connessione Servizi AWS tramite un proxy o un endpoint VPC
-
Test su endpoint di servizio in versione beta o precedente al rilascio
Opzioni di configurazione degli endpoint
AWS SDK for Java 2.x Fornisce diversi modi per configurare gli endpoint:
-
Configurazione integrata nel codice utilizzando il service client builder
-
Configurazione esterna con variabili di ambiente
-
Configurazione esterna con proprietà del sistema JVM
-
Configurazione esterna con file di configurazione condiviso AWS
Configurazione degli endpoint incorporata nel codice
Uso di endpointOverride
Il modo più diretto per configurare un endpoint consiste nell'utilizzare il endpointOverride
metodo sul service client builder. Questo metodo accetta un URI
oggetto che rappresenta l'URL dell'endpoint personalizzato.
Esempio Impostazione di un endpoint personalizzato per un client Amazon S3
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import java.net.URI; S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .endpointOverride(URI.create("https://my-custom-s3-endpoint.example.com")) .build();
Durante l'utilizzoendpointOverride
, devi comunque specificare una regione per il client, anche se l'endpoint viene impostato in modo esplicito. La regione viene utilizzata per firmare le richieste.
Rilevamento di endpoint
Alcuni Servizi AWS supportano l'endpoint discovery, in cui l'SDK può scoprire automaticamente l'endpoint ottimale da utilizzare. È possibile abilitare o disabilitare questa funzionalità utilizzando il endpointDiscoveryEnabled
metodo del service client builder.
Esempio Abilitazione del rilevamento degli endpoint per un client DynamoDB
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; DynamoDbClient dynamoDb = DynamoDbClient.builder() .region(Region.US_WEST_2) .endpointDiscoveryEnabled(true) .build();
Configurazione degli endpoint a livello di richiesta
In alcuni casi, potrebbe essere necessario sovrascrivere l'endpoint per una richiesta specifica mentre si utilizza lo stesso client per altre richieste con l'endpoint predefinito. Lo AWS SDK for Java 2.x supporta tramite l'override delle richieste.
Esempio Sovrascrivere l'endpoint per una richiesta specifica
import software.amazon.awssdk.core.SdkRequest; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.http.SdkHttpRequest; S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .build(); // Create a request GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket("my-bucket") .key("my-key") .overrideConfiguration(c -> c.putHeader("Host", "custom-endpoint.example.com")) .build(); // Execute the request with the custom endpoint s3.getObject(getObjectRequest);
Tieni presente che le sostituzioni degli endpoint a livello di richiesta sono limitate e potrebbero non funzionare per tutti i servizi o gli scenari. Nella maggior parte dei casi, si consiglia di utilizzare la configurazione degli endpoint a livello di client.
Configurazione degli endpoint esterni
Utilizzo delle variabili di ambiente
È possibile configurare gli endpoint utilizzando variabili di ambiente. L'SDK supporta la configurazione degli endpoint specifici del servizio tramite variabili di ambiente nel formatoAWS_ENDPOINT_URL_[SERVICE]
, dove [SERVICE]
è l'identificatore di servizio in maiuscolo.
Esempio Impostazione di un endpoint S3 utilizzando variabili di ambiente
# For Linux/macOS export AWS_ENDPOINT_URL_S3=https://my-custom-s3-endpoint.example.com # For Windows set AWS_ENDPOINT_URL_S3=https://my-custom-s3-endpoint.example.com
Puoi anche impostare un prefisso o suffisso URL globale dell'endpoint utilizzando le seguenti variabili di ambiente:
-
AWS_ENDPOINT_URL
- Imposta un endpoint globale per tutti i servizi -
AWS_ENDPOINT_URL_PREFIX
- Aggiunge un prefisso a tutti gli endpoint di servizio -
AWS_ENDPOINT_URL_SUFFIX
- Aggiunge un suffisso a tutti gli endpoint di servizio
Utilizzo delle proprietà del sistema JVM
È inoltre possibile configurare gli endpoint utilizzando le proprietà del sistema JVM. Il formato è simile alle variabili di ambiente ma utilizza una convenzione di denominazione diversa.
Esempio Impostazione di un endpoint S3 utilizzando le proprietà del sistema JVM
java -Daws.endpointUrl.s3=https://my-custom-s3-endpoint.example.com -jar your-application.jar
La configurazione globale degli endpoint è disponibile anche tramite le proprietà del sistema:
-
aws.endpointUrl
- Imposta un endpoint globale per tutti i servizi -
aws.endpointUrl.prefix
- Aggiunge un prefisso a tutti gli endpoint di servizio -
aws.endpointUrl.suffix
- Aggiunge un suffisso a tutti gli endpoint di servizio
Utilizzo del file di configurazione condiviso AWS
Supporta AWS SDK for Java 2.x anche la configurazione degli endpoint tramite il file di AWS
configurazione condiviso, in genere situato in ~/.aws/config
(Linux/macOS) o (Windows). %USERPROFILE%\.aws\config
Consulta la guida di riferimento AWS SDKs and Tools per informazioni ed esempi.
Precedenza della configurazione
Quando sono presenti più configurazioni di endpoint, l'SDK segue questo ordine di precedenza (dal più alto al più basso):
-
Sostituzioni a livello di richiesta (se applicabile)
-
Configurazione a livello di client tramite
endpointOverride
-
Variabili di ambiente
-
Proprietà del sistema JVM
-
File di configurazione condiviso AWS
-
Endpoint predefiniti in base a quelli configurati Regione AWS
Configurazione degli endpoint specifica del servizio
Alcuni Servizi AWS dispongono di opzioni di configurazione degli endpoint aggiuntive specifiche per quel servizio. Di seguito si riportano alcuni esempi:
Configurazione degli endpoint Amazon S3
Amazon S3 supporta diverse configurazioni di endpoint tramite la classe: S3Configuration
-
dualstackEnabled
- Abilita il supporto IPv6 -
accelerateModeEnabled
- Abilita l'accelerazione del trasferimento S3 -
pathStyleAccessEnabled
- Utilizza l'accesso in stile path anziché lo stile ospitato virtualmente -
useArnRegionEnabled
- Utilizza la regione di un ARN per le richieste interregionali -
fipsModeEnabled
- Instrada le richieste verso endpoint conformi a FIPS
Esempio Configurazione delle opzioni di endpoint specifiche per S3
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.S3Configuration; S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .serviceConfiguration(S3Configuration.builder() .accelerateModeEnabled(true) .dualstackEnabled(true) .pathStyleAccessEnabled(false) .fipsModeEnabled(true) .build()) .build();
Configurazione degli endpoint DynamoDB
Per DynamoDB, potresti voler utilizzare l'endpoint discovery o connetterti a DynamoDB locale per i test:
Esempio Connessione a DynamoDB locale
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import java.net.URI; DynamoDbClient dynamoDb = DynamoDbClient.builder() .endpointOverride(URI.create("http://localhost:8000")) // The region is meaningless for DynamoDB local but required for the client builder. .region(Region.US_WEST_2) .build();
DynamoDB supporta anche l'uso di endpoint basati su account, che possono essere configurati in codice o utilizzando impostazioni esterne. L'esempio seguente mostra come disabilitare l'uso degli endpoint basati su account nel codice quando si crea il client (sono preferite le impostazioni predefinite):
DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .region(Region.US_EAST_1) .accountIdEndpointMode(AccountIdEndpointMode.DISABLED) .build();
Best practice
Quando configuri gli endpoint in AWS SDK for Java 2.x, considera queste best practice:
-
Utilizza la configurazione esterna per endpoint specifici dell'ambiente: utilizza le variabili di ambiente, le proprietà del sistema o il file di AWS configurazione per gli endpoint che variano tra gli ambienti (sviluppo, test, produzione).
-
Usa la configurazione in-code per endpoint specifici dell'applicazione: utilizza il metodo del client builder per endpoint specifici per la progettazione dell'
endpointOverride
applicazione. -
Specificate sempre una regione: anche quando sovrascrivete gli endpoint, specificate sempre una regione così come viene utilizzata per la firma delle richieste.
-
Fai attenzione alle sostituzioni globali degli endpoint: l'utilizzo di sostituzioni globali degli endpoint può influire su tutti i servizi, il che potrebbe non essere quello che intendi.
-
Considerate le implicazioni per la sicurezza: quando utilizzate endpoint personalizzati, assicuratevi che dispongano di misure di sicurezza appropriate, in particolare per i carichi di lavoro di produzione.