Conexiones de Azure Cosmos DB - AWS Glue

Conexiones de Azure Cosmos DB

Puede usar AWS Glue for Spark para leer y escribir en contenedores existentes de Azure Cosmos DB mediante la API de NoSQL en AWS Glue 4.0 y versiones posteriores. Puede definir qué leer desde Azure Cosmos DB con una consulta SQL. Se conecta a Azure Cosmos DB mediante una clave de Azure Cosmos DB almacenada en AWS Secrets Manager mediante una conexión de AWS Glue.

Para obtener más información sobre Azure Cosmos DB para NoSQL, consulte la documentación de Azure.

Configuración de las conexiones de Azure Cosmos DB

Para conectarse a Azure Cosmos DB desde AWS Glue, tendrá que crear y almacenar su clave de Azure Cosmos DB en un AWS Secrets Manager secreto y, a continuación, asociar ese secreto a una conexión AWS Glue de Azure Cosmos DB.

Requisitos previos:

  • En Azure, tendrá que identificar o generar una clave de Azure Cosmos DB para que la utilice AWS Glue, cosmosKey. Para obtener más información, consulte Acceso seguro a los datos en Azure Cosmos DB en la documentación de Azure.

Para configurar una conexión a Azure Cosmos DB:
  1. En AWS Secrets Manager, cree un secreto con su clave de datos de Azure Cosmos DB. Para crear un secreto en Secrets Manager, siga el tutorial disponible en Crear un secreto AWS Secrets Manager en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto, secretName, para el siguiente paso.

    • Al seleccionar pares clave/valor, genere un par para la clave spark.cosmos.accountKey con el valor cosmosKey.

  2. En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en Adición de una conexión de AWS Glue. Tras crear la conexión, conserve el nombre de la conexión, connectionName, para el uso futuro en AWS Glue.

    • Al seleccionar un tipo de conexión, seleccione Azure Cosmos DB.

    • Al seleccionar un secreto AWS, proporcione un secretName.

Tras crear una conexión a AWS Glue Azure Cosmos DB, tendrá que realizar los siguientes pasos antes de ejecutar el trabajo de AWS Glue:

  • Otorgue al rol de IAM asociado al permiso de su trabajo de AWS Glue para leer secretName.

  • En la configuración del trabajo de Glue AWS, proporcione connectionName como una conexión de red adicional.

Lectura de contenedores de Azure Cosmos DB para NoSQL

Requisitos previos:

  • Un contenedor de Azure Cosmos DB para NoSQL del que desearía leer. Necesitará la información de identificación del contenedor.

    Un contenedor de Azure Cosmos para NoSQL se identifica por su base de datos y su contenedor. Debe proporcionar los nombres de la base de datos, cosmosDBName, y del contenedor, cosmosContainerName, al conectarse a la API de Azure Cosmos para NoSQL.

  • Una conexión AWS Glue Azure Cosmos DB configurada para proporcionar información de autenticación y ubicación de red. Para obtenerla, complete los pasos del procedimiento anterior, Para configurar una conexión a Azure Cosmos DB. Necesitará el nombre de la conexión de AWS Glue, connectionName.

Por ejemplo:

azurecosmos_read = glueContext.create_dynamic_frame.from_options( connection_type="azurecosmos", connection_options={ "connectionName": connectionName, "spark.cosmos.database": cosmosDBName, "spark.cosmos.container": cosmosContainerName, } )

También puede proporcionar una consulta SELECT SQL para filtrar los resultados devueltos a su DynamicFrame. Deberá configurar query.

Por ejemplo:

azurecosmos_read_query = glueContext.create_dynamic_frame.from_options( connection_type="azurecosmos", connection_options={ "connectionName": "connectionName", "spark.cosmos.database": cosmosDBName, "spark.cosmos.container": cosmosContainerName, "spark.cosmos.read.customQuery": "query" } )

Escribir en un contenedor de Azure Cosmos DB para NoSQL

En este ejemplo, se escribe la información de un DynamicFrame existente, dynamicFrame en Azure Cosmos DB. Si el contenedor ya contiene información, AWS Glue añadirá los datos de su DynamicFrame. Si la información del contenedor tiene un esquema diferente al de la información que escribe, se producirán errores.

Requisitos previos:

  • Una tabla de Azure Cosmos DB a la que desearía escribir. Necesitará la información de identificación del contenedor. Debe crear el contenedor antes de llamar al método de conexión.

    Un contenedor de Azure Cosmos para NoSQL se identifica por su base de datos y su contenedor. Debe proporcionar los nombres de la base de datos, cosmosDBName, y del contenedor, cosmosContainerName, al conectarse a la API de Azure Cosmos para NoSQL.

  • Una conexión AWS Glue Azure Cosmos DB configurada para proporcionar información de autenticación y ubicación de red. Para obtenerla, complete los pasos del procedimiento anterior, Para configurar una conexión a Azure Cosmos DB. Necesitará el nombre de la conexión de AWS Glue, connectionName.

Por ejemplo:

azurecosmos_write = glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="azurecosmos", connection_options={ "connectionName": connectionName, "spark.cosmos.database": cosmosDBName, "spark.cosmos.container": cosmosContainerName )

Referencia de opciones de conexión de Azure Cosmos DB

  • connectionName: obligatorio. Se utiliza para lectura/escritura. El nombre de una conexión de AWS Glue Azure Cosmos DB configurada para proporcionar información de autenticación y ubicación de red a su método de conexión.

  • spark.cosmos.database: obligatorio. Se utiliza para lectura/escritura. Valores válidos: nombres de bases de datos. Nombre de base de datos de Azure Cosmos DB para NoSQL.

  • spark.cosmos.container: obligatorio. Se utiliza para lectura/escritura. Valores válidos: nombres de contenedores. Nombre del contenedor de Azure Cosmos DB para NoSQL.

  • spark.cosmos.read.customQuery: se utiliza para leer. Valores válidos: consultas SQL SELECT. Consulta personalizada para seleccionar los documentos que se van a leer.