Conector para DocumentDB de Amazon Athena - Amazon Athena

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.

Conector para DocumentDB de Amazon Athena

El conector de DocumentDB de Amazon Athena permite a Athena comunicarse con sus instancias de DocumentDB para que pueda consultar los datos de DocumentDB con SQL. El conector también funciona con cualquier punto de conexión compatible con MongoDB.

A diferencia de los almacenes de datos relacionales tradicionales, las colecciones de Amazon DocumentDB no tienen ningún esquema establecido. DocumentDB no tiene un almacén de metadatos. Cada entrada de una colección de DocumentDB puede tener diferentes campos y tipos de datos.

El conector DocumentDB admite dos mecanismos para generar información de esquemas de tablas: inferencia básica de esquemas y metadatos. AWS Glue Data Catalog

La inferencia de esquemas es la opción predeterminada. Esta opción escanea una pequeña cantidad de documentos de la colección, forma una unión de todos los campos y fuerza los campos que tienen tipos de datos no superpuestos. Esta opción funciona bien para colecciones que, en su mayoría, tienen entradas uniformes.

Para las recopilaciones con una mayor variedad de tipos de datos, el conector admite la recuperación de metadatos de AWS Glue Data Catalog. Si el conector ve una AWS Glue base de datos y una tabla que coinciden con los nombres de la base de datos y la colección de DocumentDB, obtiene la información del esquema de la tabla correspondiente AWS Glue . Al crear la AWS Glue tabla, le recomendamos que la convierta en un superconjunto de todos los campos a los que desee acceder desde la colección de DocumentDB.

Si tiene Lake Formation habilitado en su cuenta, la función de IAM para su conector Lambda federado de Athena que implementó es AWS Serverless Application Repository el acceso de lectura imprescindible en Lake Formation al. AWS Glue Data Catalog

Requisitos previos

Parámetros

Use las variables de entorno de Lambda de esta sección para configurar el conector de DocumentDB.

  • spill_bucket: especifica el bucket de Amazon S3 para los datos que superen los límites de la función de Lambda.

  • spill_prefix: (opcional) de forma predeterminada, se establece una subcarpeta en la carpeta especificada spill_bucket llamada athena-federation-spill. Le recomendamos configurar un ciclo de vida de almacenamiento de Amazon S3 en esta ubicación para eliminar vertidos de más de un número predeterminado de días u horas.

  • spill_put_request_headers: (opcional) un mapa codificado en JSON de encabezados y valores de solicitudes para la solicitud putObject de Amazon S3 que se usa para el vertidos (por ejemplo, {"x-amz-server-side-encryption" : "AES256"}). Para ver otros posibles encabezados, consulta la referencia PutObjectde la API de Amazon Simple Storage Service.

  • kms_key_id: (opcional) de forma predeterminada, los datos que se vierten a Amazon S3 se cifran mediante el modo de cifrado autenticado AES-GCM y una clave generada aleatoriamente. Para que la función de Lambda use claves de cifrado más seguras generadas por KMS, como a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, puede especificar un ID de clave de KMS.

  • disable_spill_encryption: (opcional) cuando se establece en True, desactiva el cifrado del vertido. El valor predeterminado es False, de modo que los datos que se vierten a S3 se cifran mediante AES-GCM, ya sea mediante una clave generada aleatoriamente o KMS para generar claves. La desactivación del cifrado de vertido puede mejorar el rendimiento, especialmente si su ubicación de vertido usa cifrado del servidor.

  • disable_glue: (opcional) Si está presente y se establece en true, el conector no intenta recuperar metadatos adicionales de. AWS Glue

  • glue_catalog: (opcional) use esta opción para especificar un catálogo de AWS Glue entre cuentas. De forma predeterminada, el conector intenta obtener los metadatos de su propia cuenta. AWS Glue

  • default_docdb: si está presente, especifica una cadena de conexión de DocumentDB que se utilizará cuando no exista ninguna variable de entorno específica del catálogo.

  • disable_projection_and_casing: (opcional) desactiva la proyección y la distinción entre mayúsculas y minúsculas. Utilícelo si desea consultar tablas de Amazon DocumentDB que utilizan nombres de columna que distinguen mayúsculas de minúsculas El parámetro disable_projection_and_casing utiliza los siguientes valores para especificar el comportamiento de las mayúsculas y minúsculas y la asignación de columnas:

    • false (falso): esta es la configuración predeterminada. La proyección está habilitada y el conector espera que todos los nombres de las columnas estén en minúsculas.

    • true (verdadero): desactiva la proyección y la distinción entre mayúsculas y minúsculas. Al usar la el parámetro disable_projection_and_casing, tenga en cuenta los siguientes puntos:

      • El uso del parámetro puede dar lugar a un mayor uso del ancho de banda. Además, si su función de Lambda no está en la misma Región de AWS que su origen de datos, se generarán mayores costos por transferencia estándar entre regiones de AWS como resultado del mayor uso del ancho de banda. Para obtener más información sobre los costos de transferencia entre regiones, consulte los cargos por transferencia de AWS datos para arquitecturas de servidor y sin servidor en el blog de AWS Partner Network.

      • Debido a que se transfiere una mayor cantidad de bytes y a que esta requiere un mayor tiempo de deserialización, la latencia general puede aumentar.

  • enable_case_insensitive_match: (opcional) Cuandotrue, realiza búsquedas sin distinción de mayúsculas y minúsculas en nombres de esquemas y tablas en Amazon DocumentDB. El valor predeterminado es false. Utilícelo si la consulta contiene nombres de tablas o esquemas en mayúsculas.

Especificación de cadenas de conexión

Puede proporcionar una o más propiedades que definan los detalles de conexión de DocumentDB para las instancias de DocumentDB que utiliza con el conector. Para ello, defina una variable de entorno de Lambda que corresponda al nombre del catálogo que quiere usar en Athena. Por ejemplo, suponga que quiere usar las siguientes consultas para consultar dos instancias de DocumentDB diferentes desde Athena:

SELECT * FROM "docdb_instance_1".database.table
SELECT * FROM "docdb_instance_2".database.table

Antes de poder usar estas dos instrucciones SQL, debe agregar dos variables de entorno a la función de Lambda: docdb_instance_1 y docdb_instance_2. El valor de cada una debe ser una cadena de conexión de DocumentDB con el siguiente formato:

mongodb://:@:/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0

Uso de secretos de

Si lo desea, puede utilizar AWS Secrets Manager una parte o la totalidad del valor para los detalles de la cadena de conexión. Para utilizar la característica Consulta federada de Athena con Secrets Manager, la VPC conectada a la función de Lambda debe tener acceso a Internet o un punto de conexión de VPC para conectarse a Secrets Manager.

Si usa la sintaxis ${my_secret} para poner el nombre de un secreto de Secrets Manager en la cadena de conexión, el conector reemplaza ${my_secret} por los valores de texto plano de Secrets Manager. Los secretos deben almacenarse como un secreto de texto plano con valor <username>:<password>. Los secretos almacenados como {username:<username>,password:<password>} no se pasarán correctamente a la cadena de conexión.

Los secretos también se pueden usar para toda la cadena de conexión, y el nombre de usuario y la contraseña se pueden definir dentro del secreto.

Por ejemplo, supongamos que establece la variable de entorno de Lambda para docdb_instance_1 en el siguiente valor:

mongodb://${docdb_instance_1_creds}@myhostname.com:123/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0

El SDK de federación de consultas de Athena intenta recuperar automáticamente un secreto llamado docdb_instance_1_creds de Secrets Manager e inyecta ese valor en lugar de ${docdb_instance_1_creds}. Cualquier parte de la cadena de conexión que se incluya en la combinación de caracteres ${ } se interpreta como un secreto de Secrets Manager. Si especifica un nombre secreto que el conector no puede encontrar en Secrets Manager, el conector no reemplaza el texto.

Configurar bases de datos y tablas en AWS Glue

Como la función de inferencia de esquemas integrada del conector escanea un número limitado de documentos y solo admite un subconjunto de tipos de datos, es posible que desee AWS Glue utilizarla como metadatos.

Para habilitar una AWS Glue tabla para su uso con Amazon DocumentDB, debe tener una AWS Glue base de datos y una tabla para la base de datos y la colección de DocumentDB para las que desee proporcionar metadatos adicionales.

Para usar una tabla como metadatos adicionales AWS Glue
  1. Al editar la tabla y la base de datos en la AWS Glue consola, añada la siguiente propiedad de tabla.

    • docdb-metadata-flag— Esta propiedad indica al conector DocumentDB que el conector puede usar la tabla para metadatos adicionales. Puede proporcionar cualquier valor para docdb-metadata-flag siempre y cuando la docdb-metadata-flag esté presente en la lista de propiedades de la tabla.

  2. (Opcional) Agregue la propiedad de la tabla sourceTable. Esta propiedad define el nombre de la tabla de origen en Amazon DocumentDB. Utilice esta propiedad si las reglas de nomenclatura de AWS Glue tablas le impiden crear una AWS Glue tabla con el mismo nombre que la tabla de Amazon DocumentDB. Por ejemplo, no se permiten mayúsculas en nombres de tablas de AWS Glue , pero se permiten en los de tablas de Amazon DocumentDB.

  3. (Opcional) Agregue la propiedad de tabla columnMapping. Esta propiedad define las asignaciones de nombres de columnas. Utilice esta propiedad si las reglas de nomenclatura de AWS Glue columnas le impiden crear una AWS Glue tabla con los mismos nombres de columna que los de su tabla de Amazon DocumentDB. Esto puede resultar útil porque se permiten mayúsculas en nombres de columnas de Amazon DocumentDB, pero no se permiten en los nombres de columnas de AWS Glue .

    Se espera que el valor de la propiedad columnMapping sea un conjunto de asignaciones en el formato col1=Col1,col2=Col2.

    nota

    La asignación de columnas solo se aplica a los nombres de las columnas de nivel superior y no a los campos anidados.

    Tras añadir la propiedad de la AWS Glue columnMapping tabla, puede eliminar la variable de entorno disable_projection_and_casing Lambda.

  4. Asegúrese de utilizar los tipos de datos adecuados para los que AWS Glue se indican en este documento.

Compatibilidad con tipos de datos

En esta sección se enumeran los tipos de datos que utiliza el conector de DocumentDB para la inferencia de esquemas y los tipos de datos cuando se utilizan AWS Glue metadatos.

Tipos de datos de inferencia de esquemas

La característica de inferencia de esquemas del conector de DocumentDB intenta inferir valores que pertenecen a uno de los siguientes tipos de datos. En la tabla se muestran los tipos de datos correspondientes para Amazon DocumentDB, Java y Apache Arrow.

Apache Arrow Java o DocDB
VARCHAR Cadena
INT Entero
BIGINT Largo
BIT Booleano
FLOAT4 Flotante
FLOAT8 Doble
TIMESTAMPSEC Date
VARCHAR ObjectId
LIST Enumeración
STRUCT Documento

AWS Glue tipos de datos

Si los utiliza AWS Glue para metadatos complementarios, puede configurar los siguientes tipos de datos. En la tabla se muestran los tipos de datos correspondientes a Apache Arrow AWS Glue y Apache Arrow.

AWS Glue Apache Arrow
int INT
bigint BIGINT
double FLOAT8
float FLOAT4
boolean BIT
binario VARBINARY
cadena VARCHAR
Enumeración LIST
Struct STRUCT

Permisos necesarios

Para obtener información completa sobre las políticas de IAM que requiere este conector, consulte la sección Policies del archivo athena-docdb.yaml. En la siguiente lista se resumen los permisos requeridos.

  • Acceso de escritura a Amazon S3: el conector requiere acceso de escritura a una ubicación de Amazon S3 para volcar los resultados de consultas de gran tamaño.

  • Athena GetQueryExecution: el conector utiliza este permiso para fallar rápidamente cuando finaliza la consulta anterior de Athena.

  • AWS Glue Data Catalog— El conector DocumentDB requiere acceso de solo lectura AWS Glue Data Catalog para obtener información del esquema.

  • CloudWatch Registros: el conector requiere acceso a CloudWatch los registros para almacenar los registros.

  • AWS Secrets Manager acceso de lectura: si decide almacenar los detalles del punto final de DocumentDB en Secrets Manager, debe conceder al conector acceso a esos secretos.

  • Acceso a la VPC: el conector requiere la capacidad de conectar y desconectar interfaces a la VPC para que pueda conectarse a ella y comunicarse con las instancias de DocumentDB.

Rendimiento

El conector para Amazon DocumentDB de Athena no admite actualmente análisis paralelos. En cambio, intenta insertar predicados como parte de sus consultas de DocumentDB, y los predicados de los índices de la colección de DocumentDB dan lugar a una cantidad mucho menor de datos analizados.

La función de Lambda inserta proyecciones para reducir los datos analizados por la consulta. Sin embargo, a veces, la selección de un subconjunto de columnas provoca un tiempo de ejecución de consultas más prolongado. Las cláusulas LIMIT reducen la cantidad de datos analizados; sin embargo, si no proporciona un predicado, es probable que las consultas SELECT con una cláusula LIMIT analicen al menos 16 MB de datos.

Véase también