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.
Uso de una canalización OpenSearch de ingestión con Amazon DocumentDB
Puedes usar el complemento DocumentDB
Puede procesar los datos con o sin una instantánea inicial completa. Una instantánea completa captura una colección completa de Amazon DocumentDB y la carga en Amazon S3. A continuación, la canalización envía los datos a uno o más OpenSearch índices. Una vez que ingiere la instantánea, la canalización sincroniza los cambios en curso para mantener la coherencia y, finalmente, recupera las actualizaciones prácticamente en tiempo real.
Si ya tienes una instantánea completa de otra fuente o solo necesitas procesar eventos nuevos, puedes hacer streaming sin necesidad de una instantánea. En este caso, la canalización lee directamente los flujos de cambios de Amazon DocumentDB sin una carga masiva inicial.
Si habilita la transmisión, debe habilitar una transmisión de cambios en su colección de Amazon DocumentDB. Sin embargo, si solo realiza una carga completa o una exportación, no necesita una transmisión de cambios.
Requisitos previos
Antes de crear tu canalización OpenSearch de ingestión, lleva a cabo los siguientes pasos:
-
Para crear un clúster de Amazon DocumentDB con permiso para leer datos, siga los pasos que se indican en Creación de un clúster de Amazon DocumentDB en la Guía para desarrolladores de Amazon DocumentDB. Si utiliza la infraestructura de los CDC, configure su clúster de Amazon DocumentDB para publicar los flujos de cambios.
-
Habilitar TLS en su clúster de Amazon DocumentDB.
-
Configure un CIDR de VPC de un espacio de direcciones privado para usarlo con Ingestión. OpenSearch
-
Configure la autenticación en su clúster de Amazon DocumentDB con. AWS Secrets Manager Active la rotación de secretos siguiendo los pasos de Rotación automática de contraseñas para Amazon DocumentDB. Para obtener más información, consulte Acceso a bases de datos mediante seguridad y control de acceso basados en roles en Amazon DocumentDB.
-
Si utiliza un flujo de cambios para suscribirse a los cambios de datos de la colección de Amazon DocumentDB, puede ampliar el periodo de retención hasta 7 días con el parámetro
change_stream_log_retention_duration
para evitar la pérdida de datos. Los eventos de flujos de cambios se almacenan durante 3 horas, de forma predeterminada, una vez registrado el evento, lo que no es tiempo suficiente para colecciones de gran tamaño. Para modificar el período de retención del flujo de cambios, consulte Modificación de la duración de retención del registro del flujo de cambios. -
Cree un dominio OpenSearch de servicio o una colección OpenSearch sin servidor. Para obtener más información, consulte Creación de dominios OpenSearch de servicio y Creación de colecciones.
-
Adjunte una política basada en recursos al dominio o una política de acceso a datos a la colección. Estas políticas de acceso permiten a OpenSearch Ingestion escribir datos de su clúster de Amazon DocumentDB en su dominio o colección.
El siguiente ejemplo de política de acceso al dominio permite que el rol de canalización, que creará en el paso siguiente, escriba datos en un dominio. Asegúrese de actualizar el
resource
con su propio ARN.Para crear un rol de IAM con los permisos correctos para acceder a los datos de escritura en la colección o el dominio, consulte. Configuración de roles y usuarios en Amazon OpenSearch Ingestion
Paso 1: configurar el rol de canalización
Una vez configurados los requisitos previos de la canalización de Amazon DocumentDB, configure el rol de la canalización que desee usar en la configuración de la canalización y agregue los siguientes permisos de Amazon DocumentDB al rol:
Debe proporcionar los EC2 permisos de Amazon anteriores en la función de IAM que utilice para crear la canalización de OpenSearch ingestión, ya que la canalización utiliza estos permisos para crear y eliminar una interfaz de red en su VPC. La canalización solo puede acceder al clúster de Amazon DocumentDB a través de esta interfaz de red.
Paso 2: crear la canalización
A continuación, puede configurar una canalización de OpenSearch ingestión como la siguiente, que especifica Amazon DocumentDB como origen. Tenga en cuenta que, para rellenar el nombre del índice, la función getMetadata
utiliza
como clave de metadatos. Si desea usar un nombre de índice diferente sin el método documentdb_collection
getMetadata
, puede usar la configuración index:
"
.my_index_name
"
version: "2" documentdb-pipeline: source: documentdb: acknowledgments: true host: "https://
docdb-cluster-id
.us-east-1
.docdb.amazonaws.com" port: 27017 authentication: username: ${aws_secrets:secret:username
} password: ${aws_secrets:secret:password
} aws: s3_bucket: "bucket-name
" s3_region: "bucket-region
" s3_prefix: "path
" #optional path for storing the temporary data collections: - collection: "dbname.collection
" export: true stream: true sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com
"] index: "${getMetadata(\"documentdb_collection
\")}" index_type: custom document_id: "${getMetadata(\"primary_key\")}" action: "${getMetadata(\"opensearch_action\")}" document_version: "${getMetadata(\"document_version\")}" document_version_type: "external" extension: aws: secrets: secret: secret_id: "my-docdb-secret
" region: "us-east-1
" refresh_interval: PT1H
Puede utilizar un esquema de Amazon DocumentDB preconfigurado para crear esta canalización. Para obtener más información, consulte ¿Trabajando con planos.
Si utiliza la AWS Management Console para crear su canalización, también debe adjuntarla a la VPC para poder utilizar Amazon DocumentDB como fuente. Para ello, busque la sección Opciones de red de origen, seleccione la casilla Adjuntar a la VPC y elija su CIDR de una de las opciones predeterminadas que se proporcionan. Puede usar cualquier CIDR de un espacio de direcciones privado, tal como se define en RFC 1918 Best Current Practice
Para proporcionar un CIDR personalizado, seleccione Otros en el menú desplegable. Para evitar una colisión en las direcciones IP entre OpenSearch Ingestión y Amazon DocumentDB, asegúrese de que el CIDR de la VPC de Amazon DocumentDB sea diferente del CIDR de Ingestión. OpenSearch
Para obtener más información, consulte Configuring VPC access for a pipeline.
Coherencia de datos
La canalización garantiza la coherencia de los datos mediante el sondeo continuo o la recepción de cambios del clúster de Amazon DocumentDB y la actualización de los documentos correspondientes del OpenSearch índice.
OpenSearch La ingestión apoya el end-to-end reconocimiento para garantizar la durabilidad de los datos. Cuando una canalización lee instantáneas o transmisiones, crea particiones de forma dinámica para el procesamiento paralelo. La canalización marca una partición como completa cuando recibe un acuse de recibo después de ingerir todos los registros del dominio o la OpenSearch colección.
Si quieres incorporarlos a una colección de búsquedas OpenSearch sin servidor, puedes generar un identificador de documento en la canalización. Si quieres incorporarlo a una colección de series temporales OpenSearch sin servidor, ten en cuenta que la canalización no genera un identificador de documento, por lo que debes omitirlo document_id:
"${getMetadata(\"primary_key\")}"
en la configuración del colector de canalizaciones.
Una canalización OpenSearch de ingestión también asigna las acciones de los eventos entrantes a las correspondientes acciones de indexación masiva para facilitar la ingesta de documentos. Esto mantiene la coherencia de los datos, de modo que cada cambio de datos en Amazon DocumentDB se concilia con los cambios en los documentos correspondientes. OpenSearch
Asignación de tipos de datos
OpenSearch El servicio asigna dinámicamente los tipos de datos de cada documento entrante al tipo de datos correspondiente en Amazon DocumentDB. La siguiente tabla muestra cómo OpenSearch Service mapea automáticamente varios tipos de datos.
Tipo de datos: | OpenSearch | Amazon DocumentDB |
---|---|---|
Entero |
OpenSearch asigna automáticamente valores enteros de Amazon DocumentDB a OpenSearch enteros. OpenSearch mapea dinámicamente el campo en función del primer documento enviado. Si tiene una combinación de tipos de datos para el mismo atributo en Amazon DocumentDB, es posible que se produzca un error en la asignación automática. Por ejemplo, si el primer documento tiene un atributo largo y un documento posterior tiene el mismo atributo que un número entero, OpenSearch no podrá ingerir el segundo documento. En estos casos, debe proporcionar una plantilla de asignación explícita que elija el tipo de número más flexible, como la siguiente:
|
Amazon DocumentDB admite enteros. |
Largo |
OpenSearch asigna automáticamente los valores largos de Amazon DocumentDB a OpenSearch largos. OpenSearch mapea dinámicamente el campo en función del primer documento enviado. Si tiene una combinación de tipos de datos para el mismo atributo en Amazon DocumentDB, es posible que se produzca un error en la asignación automática. Por ejemplo, si el primer documento tiene un atributo largo y un documento posterior tiene el mismo atributo que un número entero, OpenSearch no podrá ingerir el segundo documento. En estos casos, debe proporcionar una plantilla de asignación explícita que elija el tipo de número más flexible, como la siguiente:
|
Amazon DocumentDB admite largos. |
Cadena |
OpenSearch asigna automáticamente los valores de cadena como texto. En algunas situaciones, como en el caso de los valores enumerados, puede asignarlos al tipo de palabra clave. El siguiente ejemplo muestra cómo asignar un atributo de Amazon DocumentDB denominado
|
Amazon DocumentDB admite cadenas. |
Doble |
OpenSearch asigna automáticamente los valores dobles de Amazon DocumentDB a OpenSearch dobles. OpenSearch mapea dinámicamente el campo en función del primer documento enviado. Si tiene una combinación de tipos de datos para el mismo atributo en Amazon DocumentDB, es posible que se produzca un error en la asignación automática. Por ejemplo, si el primer documento tiene un atributo largo y un documento posterior tiene el mismo atributo que un número entero, OpenSearch no podrá ingerir el segundo documento. En estos casos, debe proporcionar una plantilla de asignación explícita que elija el tipo de número más flexible, como la siguiente:
|
Amazon DocumentDB admite dobles. |
Date |
De forma predeterminada, la fecha se asigna a una entrada entera. OpenSearch Puede definir una plantilla de mapeo personalizada para asignar una fecha a una OpenSearch fecha.
|
Amazon DocumentDB admite fechas. |
Timestamp |
De forma predeterminada, la marca de tiempo se asigna a una entrada entera. OpenSearch Puede definir una plantilla de mapeo personalizada para asignar una fecha a una OpenSearch fecha.
|
Amazon DocumentDB admite marcas temporales. |
Booleano |
OpenSearch asigna un tipo booleano de Amazon DocumentDB a un tipo booleano. OpenSearch |
Amazon DocumentDB admite atributos de tipo booleano. |
Decimal |
OpenSearch asigna los atributos del mapa de Amazon DocumentDB a campos anidados. Las mismas asignaciones se aplican dentro de un campo anidado. El siguiente ejemplo asigna una cadena de un campo anidado a un tipo de palabra clave en: OpenSearch
Con esta asignación personalizada, puede consultar y agregar el campo con una precisión de doble nivel. El valor original conserva toda la precisión de la |
Amazon DocumentDB admite decimales. |
Expresión regular | El tipo de expresión regular crea campos anidados. Entre ellos se encuentran y . |
Amazon DocumentDB admite expresiones regulares. |
Datos Binary |
OpenSearch asigna automáticamente los datos binarios de Amazon DocumentDB a OpenSearch texto. Puede proporcionar un mapeo para escribirlos como campos binarios. OpenSearch El siguiente ejemplo muestra cómo asignar un campo de Amazon DocumentDB denominado
|
Amazon DocumentDB admite campos de datos binarios. |
ObjectId | Los campos con un tipo de ObjectID se asignan a OpenSearch campos de texto. El valor será la representación en cadena del objectId. | Amazon DocumentDB admite objectId. |
Nulo |
OpenSearch puede ingerir documentos con el tipo nulo de Amazon DocumentDB. Guarda el valor como un valor nulo en el documento. No hay ninguna asignación para este tipo y este campo no está indexado ni se puede buscar en él. Si se utiliza el mismo nombre de atributo para un tipo nulo y, posteriormente, se cambia a un tipo diferente, como una cadena, OpenSearch crea un mapeo dinámico para el primer valor no nulo. Los valores subsiguientes pueden seguir siendo valores nulos de Amazon DocumentDB. |
Amazon DocumentDB admite campos de tipo nulo. |
Sin definir |
OpenSearch puede ingerir documentos con el tipo indefinido de Amazon DocumentDB. Guarda el valor como un valor nulo en el documento. No hay ninguna asignación para este tipo y este campo no está indexado ni se puede buscar en él. Si se utiliza el mismo nombre de campo para un tipo indefinido y, posteriormente, se cambia a un tipo diferente, como una cadena, OpenSearch crea un mapeo dinámico para el primer valor no indefinido. Los valores subsiguientes pueden seguir siendo valores indefinidos de Amazon DocumentDB. |
Amazon DocumentDB admite campos de tipo indefinido. |
MinKey |
OpenSearch puede ingerir documentos con el tipo MinKey de Amazon DocumentDB. Guarda el valor como un valor nulo en el documento. No hay ninguna asignación para este tipo y este campo no está indexado ni se puede buscar en él. Si se utiliza el mismo nombre de campo para un tipo MinKey y, posteriormente, se cambia a un tipo diferente, como una cadena, OpenSearch crea un mapeo dinámico para el primer valor que no sea Minkey. Los valores subsiguientes pueden seguir siendo valores minKey de Amazon DocumentDB. |
Amazon DocumentDB admite campos de tipo minKey. |
MaxKey |
OpenSearch puede ingerir documentos con el tipo MaxKey de Amazon DocumentDB. Guarda el valor como un valor nulo en el documento. No hay ninguna asignación para este tipo y este campo no está indexado ni se puede buscar en él. Si se utiliza el mismo nombre de campo para un tipo MaxKey y, posteriormente, cambia a un tipo diferente, como una cadena, OpenSearch crea un mapeo dinámico para el primer valor que no sea MaxKey. Los valores subsiguientes pueden seguir siendo valores maxKey de Amazon DocumentDB. |
Amazon DocumentDB admite campos de tipo maxKey. |
Le recomendamos que configure la cola de mensajes sin salida (DLQ) en su canalización de ingestión. OpenSearch Si has configurado la cola, el OpenSearch servicio envía a la cola todos los documentos fallidos que no se puedan ingerir debido a errores de mapeo dinámico.
En caso de que las asignaciones automáticos fallen, puede usar template_type
y template_content
en su configuración de canalización para definir reglas de asignación explícitas. Como alternativa, puede crear plantillas de asignación directamente en su dominio o colección de búsqueda antes de iniciar la canalización.
Limitaciones
Tenga en cuenta las siguientes limitaciones al configurar una canalización de OpenSearch ingestión para Amazon DocumentDB:
-
La integración OpenSearch de ingestión con Amazon DocumentDB actualmente no admite la ingesta entre regiones. El clúster de Amazon DocumentDB y la canalización OpenSearch de ingestión deben estar en el mismo lugar. Región de AWS
-
La integración OpenSearch de ingestión con Amazon DocumentDB actualmente no admite la ingesta entre cuentas. El clúster de Amazon DocumentDB y la canalización OpenSearch de ingestión deben estar en el mismo lugar. Cuenta de AWS
-
Una canalización OpenSearch de ingestión solo admite un clúster de Amazon DocumentDB como origen.
-
La integración OpenSearch de Ingestión con Amazon DocumentDB admite específicamente los clústeres basados en instancias de Amazon DocumentDB. No es compatible con los clústeres elásticos de Amazon DocumentDB.
-
La integración OpenSearch de ingestión solo es compatible AWS Secrets Manager como mecanismo de autenticación para su clúster de Amazon DocumentDB.
-
No puede actualizar la configuración de la canalización existente para ingerir datos de una base de datos o colección diferente. En su lugar, debe crear una canalización nueva.
Alarmas recomendadas CloudWatch
Para obtener el mejor rendimiento, le recomendamos que utilice las siguientes CloudWatch alarmas al crear una canalización de OpenSearch ingestión para acceder a un clúster de Amazon DocumentDB como fuente.
CloudWatch Alarma | Descripción |
---|---|
<pipeline-name> . Base de datos del documento. Credenciales cambiadas |
Esta métrica indica la frecuencia con la que se rotan los secretos. AWS |
<pipeline-name> .documentdb. executorRefreshErrors |
Esta métrica indica errores al actualizar los secretos de AWS . |
<pipeline-name> .documento/base de datos. exportRecordsTotal |
Esta métrica indica el número de registros exportados desde Amazon DocumentDB. |
<pipeline-name> .documento/base de datos. exportRecordsProcessed |
Esta métrica indica la cantidad de registros procesados por la canalización OpenSearch de ingestión. |
<pipeline-name> .documentdb. exportRecordProcessingErrores |
Esta métrica indica el número de errores de procesamiento en una canalización OpenSearch de ingestión al leer los datos de un clúster de Amazon DocumentDB. |
<pipeline-name> .documentdb. exportRecordsSuccessTotal |
Esta métrica indica el número total de registros de exportación procesados correctamente. |
<pipeline-name> .documentdb. exportRecordsFailedTotal |
Esta métrica indica el número total de registros que no se han podido procesar. |
<pipeline-name> . Base de datos del documento: bytes recibidos |
Esta métrica indica el número total de bytes recibidos por una canalización de ingestión. OpenSearch |
<pipeline-name> .DocumentDB. Bytes procesados |
Esta métrica indica el número total de bytes procesados por una canalización de ingestión. OpenSearch |
<pipeline-name> .documentdb. exportPartitionQueryTotal |
Esta métrica indica el total de la partición exportada. |
<pipeline-name> .documentdb. streamRecordsSuccessTotal |
Esta métrica indica el número de registros del flujo procesados correctamente. |
<pipeline-name> .documentdb. streamRecordsFailedTotal |
Esta métrica indica el número total de registros del flujo que no se han podido procesar. |