Configuración de la Región de AWS para AWS SDK for Java 2.x - AWS SDK for Java 2.x

Configuración de la Región de AWS para AWS SDK for Java 2.x

Los clientes del SDK se conectan a un Servicio de AWS en una Región de AWS específica que usted especifica al crear el cliente. Esta configuración permite que la aplicación interactúe con recursos de AWS de esa área geográfica. Al crear un cliente de servicio sin establecer una región de forma explícita, el SDK utiliza la región predeterminada de la configuración externa.

Configure explícitamente una Región de AWS

Para configurar de forma explícita una región, le recomendamos que utilice las constantes definidas en la clase Region. Esta es una enumeración de todas las regiones disponibles públicamente.

Para crear un cliente con una región enumerada de la clase, utilice el método region del creador de clientes.

Ec2Client ec2 = Ec2Client.builder() .region(Region.US_WEST_2) .build();

Si la región que intenta utilizar no es una de las enumeraciones en la clase Region, puede crear una nueva región con el método of estático. Este método le permite obtener acceso a nuevas regiones sin actualizar el SDK.

Region newRegion = Region.of("us-east-42"); Ec2Client ec2 = Ec2Client.builder() .region(newRegion) .build();
nota

Después de compilar un cliente con el creador, este es inmutable y la Región de AWS no puede modificarse. Si trabaja con varias Regiones de AWS para el mismo servicio, debe crear varios clientes, uno por región.

Permiso para que el SDK determine automáticamente la Región de AWS predeterminada desde el entorno

Cuando el código se ejecuta en Amazon EC2 o AWS Lambda, es posible que desee configurar los clientes para que utilicen la misma Región de AWS en la que se está ejecutando el código. De esta forma, el código se desacopla del entorno en el que se está ejecutando y es más sencillo implementar la aplicación en varias Regiones de AWS para reducir la latencia o la redundancia.

Si desea utilizar el proveedor de la Región de AWS predeterminada para determinar la región desde el entorno, use el método create del compilador del cliente.

Ec2Client ec2 = Ec2Client.create();

También puede configurar el cliente de otras formas, pero no establecer la región. El SDK selecciona la Región de AWS mediante la cadena de proveedores predeterminados de la región:

Ec2Client ec2Client = Ec2Client.builder() .credentialsProvider(ProfileCredentialsProvider.builder() .profileName("my-profile") .build()) .build();

Si no configura explícitamente una Región de AWS mediante el método region, el SDK consulta la cadena predeterminada de proveedores de regiones para intentar determinar la región que se va a usar.

Comprensión de la cadena de proveedores predeterminados de la Región de AWS

El SDK sigue los pasos indicados a continuación para buscar una Región de AWS:

  1. Cualquier región explícita establecida mediante el método region en el propio compilador prevalece sobre todas las demás.

  2. El SDK busca la propiedad aws.region del sistema JVM y usa su valor si la encuentra.

  3. Se comprueba la variable de entorno AWS_REGION. Si se ha establecido, se usa esa región para configurar el cliente.

    nota

    El contenedor de Lambda establece esta variable de entorno.

  4. El SDK comprueba el perfil activo en los archivos de configuración y credenciales compartidos de AWS. Si la propiedad region está presente, el SDK la utiliza.

    El perfil default es el perfil activo a menos que lo anule una variable de entorno AWS_PROFILE o una propiedad del sistema JVM aws.profile. Si el SDK encuentra la propiedad region en ambos archivos para el mismo perfil (incluido el perfil default), usará el valor del archivo de credenciales compartido.

  5. El SDK intenta utilizar el servicio de metadatos de instancias (IMDS) de Amazon EC2 para determinar la región de la instancia Amazon EC2 que se está ejecutando en este momento.

  6. Si el SDK todavía no ha encontrado una región en ese momento, la creación del cliente produce una excepción.

Cuando se desarrollan aplicaciones de AWS, una práctica habitual es utilizar el archivo de configuración compartida para establecer la región para el desarrollo local y usar la cadena de proveedores predeterminados de la región para determinar la región cuando se trabaja en la infraestructura de AWS. Esto simplifica enormemente la creación del cliente y dota de portabilidad a su aplicación.

Comprobación si un servicio está disponible en una región

Para saber si un Servicio de AWS determinado está disponible en una región, utilice el método serviceMetadata estático en un cliente de servicio:

DynamoDbClient.serviceMetadata().regions().forEach(System.out::println);

El fragmento anterior imprime una larga lista de códigos de Región de AWS que tienen el servicio de DynamoDB:

af-south-1 ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ...

Puede usar un código para buscar la Enumeración de clases de región correspondiente a la región que necesita que use su cliente de servicio.

Por ejemplo, si desea trabajar con DynamoDB en la región con el código ap-northeast-2, cree su cliente de DynamoDB con al menos la siguiente configuración:

DynamoDbClient ddb = DynamoDbClient.builder() .region(Region.AP_NORTHEAST_2) .build();

Seleccionar un punto de conexión específico

En determinadas situaciones (por ejemplo, para probar una vista previa de las funciones de un servicio antes de que pasen a estar disponibles para el público general), es posible que tenga que especificar un punto de conexión específico en una región. En estas situaciones, los clientes del servicio se pueden configurar llamando al método. endpointOverride

Por ejemplo, para configurar el cliente de Amazon EC2 para que utilice la región Europa (Irlanda) con un punto de conexión concreto, use el siguiente código.

Ec2Client ec2 = Ec2Client.builder() .region(Region.EU_WEST_1) .endpointOverride(URI.create("https://ec2.eu-west-1.amazonaws.com")) .build();

Consulte Regiones y puntos de conexión para obtener la lista actual de regiones y sus puntos de conexión correspondientes para todos los servicios de AWS.