Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración de clientes de servicio en código para el AWS SDK for Java 2.x
Como alternativa a la configuración externa de los clientes de servicio, o además de ella, puede configurarlos mediante programación en código.
Al configurar los clientes de servicio en código, obtiene un control pormenorizado de las numerosas opciones disponibles. La mayoría de las configuraciones que puede configurar externamente también están disponibles en código.
Configuración básica en código
Por ejemplo, el siguiente fragmento establece el t Región de AWS EU_SOUTH_2
para un cliente de servicio Amazon S3 en el código:
S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .build();
El fragmento anterior muestra el método de fábrica estático,. builder()
El método builder()
devuelve un objeto builder
que permite personalizar el cliente de servicio. Los métodos Fluent Setter devuelven el builder
objeto (en este caso, una S3ClientBuilder
build()
para crear el cliente.
Configuración avanzada en código
El siguiente fragmento muestra opciones de configuración adicionales:
ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder( ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build()) ).build();
En el fragmento anterior, puede ver varios puntos de entrada para configurar un cliente de servicio:
-
Un
ClientOverrideConfiguration.Builder
objetoque proporciona opciones de configuración comunes a todos los clientes de servicio. Estas configuraciones son comportamientos AWS específicos independientes de cualquier implementación HTTP. -
Configuración del cliente HTTP mediante una implementación independiente del generador de clientes HTTP. Este
es un ejemplo. El cliente de servicio proporciona elApacheHttpClient.Builder
httpClientBuilder()
método para asociar el cliente HTTP configurado al cliente de servicio. -
Métodos del propio generador de clientes
, como region()
ycredentialsProvider()
En lugar de crear objetos separados y luego pasarlos a los métodos del cliente de servicio, AWS SDK for Java 2.x proporciona métodos que aceptan expresiones lambda para crear estos objetos en línea. Los métodos de configuración del generador tienen el mismo nombre, pero tienen firmas diferentes. Por ejemplo:
La configuración del cliente S3 que se mostró anteriormente con este enfoque se puede realizar en un bloque de código:
S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(b -> b .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create())) .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build())) .build();
Las opciones de configuración no están disponibles en el código
Como la siguiente configuración afecta a los procesos de inicialización fundamentales del SDK, puede establecer las siguientes opciones de configuración solo de forma externa y no en código:
Configuración de ubicación de archivos
Estos ajustes controlan la ubicación de los archivos de configuración y credenciales compartidos y no se pueden anular mediante programación una vez que el SDK los haya cargado:
-
AWS_CONFIG_FILE (variable de entorno)/AWS.configFile (propiedad del sistema JVM)
-
AWS_SHARED_CREDENTIALS_FILE (variable de entorno)/aws. sharedCredentialsFile (propiedad del sistema JVM)
Estos ajustes se deben establecer antes de que el SDK cargue los archivos de configuración, ya que determinan dónde busca el SDK la configuración. Una vez inicializado el SDK, el cambio de estos valores no tiene ningún efecto.
Desactivación del servicio de metadatos de la instancia
-
AWS_EC2_METADATA_DISABLED (variable de entorno)/AWS.disableEC2Metadata (propiedad del sistema JVM)
Esta configuración controla si el SDK intenta utilizar el servicio de metadatos de instancias o no. EC2 Una vez que el SDK se haya inicializado, no podrás cambiar esta configuración mediante programación.
Selección de perfil
-
AWS_PROFILE(variable de entorno)/aws.profile (propiedad del sistema JVM)
Esta configuración indica al SDK qué perfil debe cargar desde los archivos de configuración y credenciales compartidos. Una vez cargado, el cambio de este valor no tiene ningún efecto.
Rutas de credenciales de contenedores
-
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-
AWS_CONTAINER_CREDENCIALES_URI COMPLETO
-
AWS_CONTAINER_TOKEN DE AUTORIZACIÓN
-
AWS_CONTAINER_ARCHIVO DE TOKEN DE AUTORIZACIÓN
Estas variables de entorno se utilizan para indicar al SDK cómo obtener las credenciales de los servicios de contenedores. Una vez que se haya establecido la cadena de proveedores de credenciales durante la inicialización del cliente de servicio, no podrás cambiar esta configuración.
Selección de implementación HTTP predeterminada
-
SYNC_HTTP_SERVICE_IMPL (variable de entorno)/software.amazon.awssdk.http.service.impl (propiedad del sistema JVM)
-
ASYNC_HTTP_SERVICE_IMPL (variable de entorno)/software.amazon.awssdk.http.async.service.impl (propiedad del sistema JVM)
Esta configuración global determina qué implementación de cliente HTTP usa el SDK para todos los clientes de servicio, a menos que se anule en el código para los clientes de servicio individuales. Debe configurarlos antes de que el SDK inicialice sus clientes HTTP y no se pueden cambiar posteriormente.