Configuración externa de clientes de servicio para AWS SDK for Java 2.x
Muchas opciones de configuración se pueden administrar fuera del código. Cuando administra la configuración de forma externa, puede aplicarse a todas las aplicaciones en el mismo proceso de Java. La mayoría de las opciones de configuración se pueden establecer como variables de entorno, propiedades del sistema JVM o en un archivo de config compartido independiente de AWS. El archivo de config compartido puede mantener conjuntos de opciones independientes, denominados perfiles, para proporcionar diferentes configuraciones para distintos entornos o pruebas.
La mayoría de las variables de entorno y la configuración del archivo config compartido están estandarizadas y se comparten entre los SDK y las herramientas de AWS para garantizar una funcionalidad coherente en los diferentes lenguajes de programación y aplicaciones. En la mayoría de los casos, las propiedades del sistema JVM que puede usar el SDK para Java reflejan las variables de entorno.
Consulte la Guía de referencia de las herramientas y los SDK de AWS para obtener información sobre cómo configurar una aplicación con estos métodos, además de obtener información sobre cada ajuste de cross-sdk. Para ver toda la configuración que el SDK puede resolver a partir de las variables de entorno, las propiedades del sistema JVM o los archivos de configuración, consulte Referencia de configuración en la Guía de referencia de las herramientas y los SDK de AWS.
Cadena de proveedores de configuración para la configuración del cliente
El SDK busca los valores de configuración en varios lugares (u orígenes).
-
Cualquier ajuste explícito establecido en el código o en el propio cliente de un servicio tiene prioridad sobre cualquier otra cosa.
-
Propiedades del sistema JVM
-
Para obtener más información sobre cómo configurar las propiedades del sistema JVM, consulte Cómo configurar las propiedades del sistema JVM en la Guía de referencia de las herramientas y los SDK de AWS.
-
-
Variables de entorno
-
Para obtener más información sobre cómo establecer variables de entorno, consulte Variables de entorno en la Guía de referencia de SDK y herramientas de AWS.
-
Tenga en cuenta que puede configurar variables de entorno para un intérprete de comandos en diferentes niveles de ámbito: todo el sistema, todos los usuarios y una sesión de terminal específica.
-
-
Archivos
configycredentialscompartidos-
Para obtener más información sobre cómo configurar estos archivos, consulte Archivos
configycredentialscompartidos y en la Guía de referencia de SDK y herramientas de AWS.
-
-
Los valores predeterminados proporcionados por el código fuente del SDK se utilizan en último lugar.
-
Algunas propiedades, como la región, no tienen un valor predeterminado. Debe especificarlas explícitamente en el código, en la configuración del entorno o en el archivo
configcompartido. Si el SDK no puede resolver la configuración requerida, las solicitudes de la API pueden generar errores en tiempo de ejecución.
-
Además de esta cadena de configuración general, el SDK de Java 2.x utiliza cadenas de proveedores especializados, como la cadena de proveedores de credenciales y la cadena de proveedores de Región de AWS. Estas cadenas especializadas agregan proveedores adicionales que tienen en cuenta el entorno en el que se ejecuta el SDK. Por ejemplo, en un contenedor o una instancia de EC2.
Creación de un cliente de servicio configurado mediante opciones externas
Debe crear un cliente de servicio en la aplicación para comunicarse con un Servicio de AWS. Los clientes de servicio son la conexión esencial con los Servicios de AWS, ya que se encargan de todos los detalles complejos de la comunicación para que usted no tenga que preocuparse de ellos. Se ocupan automáticamente de tareas importantes como la seguridad, la gestión de errores y los reintentos, lo que le permite centrarse en crear la aplicación en lugar de lidiar con complicaciones técnicas.
Uso del método create()
Si todos los ajustes de configuración que necesita provienen de orígenes externos, puede crear un cliente de servicio con método sencillo:
S3Client s3Client = S3Client.create();
El fragmento de código anterior crea una instancia de S3Client. Durante la creación, el SDK busca la configuración en la cadena de proveedores de configuración. Una vez que el SDK encuentre un valor de configuración, el valor se utilizará incluso si existe una configuración que se encuentre más adelante en la cadena.
Por ejemplo, supongamos que un usuario establece el ajuste de JVM para la Región de AWS estableciendo de la propiedad del sistema -Daws.region=us-west-2. Si la variable de entorno AWS_REGION también está establecida, se ignora su valor.
La cadena de proveedores predeterminados de la región y la cadena de proveedores de credenciales predeterminados también se utilizarán en el proceso de creación. En algún punto de la cadena, el SDK debe resolver la Región de AWS que se utilizará y encontrar la configuración que le permita recuperar las credenciales para firmar las solicitudes. Si el SDK no encuentra esos valores, se produce un error en la creación del cliente.
Si bien puede crear un cliente mediante este patrón de compilador vacío, suele utilizarse este patrón cuando se desea añadir una configuración en código.
Variables de entorno del SDK para Java 2.x y propiedades del sistema JVM
Además de la configuración cross-sdk que admiten la mayoría de los SDK de AWS, el SDK para Java 2.x proporciona los siguientes ajustes.
nota
Estas variables de entorno y propiedades del sistema JVM están destinadas principalmente a casos de uso avanzados, pruebas o escenarios de implementación específicos. En la mayor parte del código de las aplicaciones, es preferible utilizar las opciones de configuración programática que ofrecen los compiladores de clientes del SDK para mejorar la seguridad de tipos y la compatibilidad con el IDE.
Variables de entorno del proveedor de credenciales de contenedor
Además de las variables de entorno de credenciales de contenedor estándar documentadas en la guía de referencia, el SDK también admite:
AWS_CONTAINER_SERVICE_ENDPOINT: esta variable de entorno especifica el punto de conexión del servicio de metadatos del contenedor cuando se utiliza el proveedor de credenciales del contenedor.
Propiedades del sistema Java: aws.containerServiceEndpoint
Valor predeterminado: #: http://169.254.170.2
Variables de entorno de implementación del cliente HTTP
SYNC_HTTP_SERVICE_IMPL: identifica de forma explícita la implementación HTTP sincrónica predeterminada que utilizará el SDK. Resulta útil cuando hay varias implementaciones en la ruta de clases o para optimizar el rendimiento, ya que la detección de implementación requiere análisis de la ruta de clases.
Propiedades del sistema Java: software.amazon.awssdk.http.service.impl
ASYNC_HTTP_SERVICE_IMPL: identifica de forma explícita la implementación HTTP asincrónica predeterminada que utilizará el SDK. Resulta útil cuando hay varias implementaciones en la ruta de clases o para optimizar el rendimiento, ya que la detección de implementación requiere análisis de la ruta de clases.
Propiedades del sistema Java: software.amazon.awssdk.http.async.service.impl