Utilisation d'un pipeline d' OpenSearch ingestion avec Amazon DocumentDB - Amazon OpenSearch Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un pipeline d' OpenSearch ingestion avec Amazon DocumentDB

Vous pouvez utiliser un pipeline d' OpenSearch ingestion avec Amazon DocumentDB pour diffuser les modifications de documents (telles que la création, la mise à jour et la suppression) vers les domaines et les OpenSearch collections Amazon Service. Le pipeline OpenSearch d'ingestion peut tirer parti des mécanismes de capture des données de modification (CDC), s'ils sont disponibles sur votre cluster Amazon DocumentDB, ou d'APIinterrogation pour fournir un moyen à grande échelle et à faible latence de diffuser en continu des données depuis un cluster Amazon DocumentDB.

Vous pouvez utiliser Amazon DocumentDB comme source pour traiter les données de deux manières : avec ou sans capture initiale complète.

Un instantané initial complet est une requête groupée d'une collection Amazon DocumentDB complète. Amazon DocumentDB télécharge cet instantané sur Amazon S3. À partir de là, un pipeline d' OpenSearch ingestion l'envoie vers un index d'un domaine ou le partitionne en plusieurs index d'un domaine. Pour garantir la OpenSearch cohérence des données dans Amazon DocumentDB, le pipeline synchronise tous les événements de création, de mise à jour et de suppression de la collection Amazon DocumentDB avec les documents enregistrés dans le ou les index. OpenSearch

Lorsque vous utilisez un instantané initial complet, votre pipeline d' OpenSearch ingestion ingère d'abord l'instantané, puis commence à lire les données des flux de modifications d'Amazon DocumentDB. Il finit par rattraper et maintenir la cohérence des données en temps quasi réel entre Amazon DocumentDB et. OpenSearch

Vous pouvez également utiliser l'intégration d' OpenSearch ingestion avec Amazon DocumentDB pour diffuser des événements sans capture instantanée. Choisissez cette option si vous disposez déjà d'un instantané complet d'un autre mécanisme, ou si vous souhaitez simplement diffuser les événements actuels d'une collection Amazon DocumentDB avec des flux de modifications.

Avec ces deux options, vous devez activer un flux de modification sur votre collection Amazon DocumentDB si vous activez un flux dans votre configuration en pipeline. Si vous utilisez uniquement le chargement complet ou l'exportation, il n'est pas nécessaire d'activer un flux de modifications.

Prérequis

Avant de créer votre pipeline OpenSearch d'ingestion, effectuez les étapes suivantes :

  1. Créez un cluster Amazon DocumentDB autorisé à lire les données en suivant les étapes décrites dans Créer un cluster Amazon DocumentDB dans le guide du développeur Amazon DocumentDB. Si vous utilisez une CDC infrastructure, assurez-vous de configurer votre cluster Amazon DocumentDB pour publier les flux de modifications.

  2. Activez TLS sur votre cluster Amazon DocumentDB.

  3. Configurez un VPC CIDR espace d'adressage privé à utiliser avec OpenSearch Ingestion.

  4. Configurez l'authentification sur votre cluster Amazon DocumentDB avec. AWS Secrets Manager Activez la rotation des secrets en suivant les étapes de la section Rotation automatique des mots de passe pour Amazon DocumentDB. Pour plus d'informations, consultez Accès aux bases de données à l'aide du contrôle d'accès et de la sécurité basés sur les rôles dans Amazon DocumentDB.

  5. Si vous utilisez un flux de modifications pour vous abonner aux modifications de données de votre collection Amazon DocumentDB, évitez les pertes de données en prolongeant la période de conservation jusqu'à 7 jours à l'aide du change_stream_log_retention_duration paramètre. Les événements des flux de modifications sont stockés pendant 3 heures, par défaut, après l'enregistrement de l'événement, ce qui n'est pas suffisant pour les collections volumineuses. Pour modifier la période de rétention du flux de modifications, consultez la section Modification de la durée de conservation du journal du flux de modifications.

  6. Créez un domaine OpenSearch de service ou une collection OpenSearch Serverless. Pour plus d'informations, consultez les sections Création OpenSearch de domaines de service et Création de collections.

  7. Associez une politique basée sur les ressources à votre domaine ou une politique d'accès aux données à votre collection. Ces politiques d'accès permettent à OpenSearch Ingestion d'écrire des données depuis votre cluster Amazon DocumentDB vers votre domaine ou votre collection.

    L'exemple de politique d'accès au domaine suivant permet au rôle de pipeline, que vous créez à l'étape suivante, d'écrire des données dans un domaine. Assurez-vous de le mettre à jour resource avec le vôtreARN.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "es:DescribeDomain", "es:ESHttp*" ], "Resource": [ "arn:aws:es:{region}:{account-id}:domain/domain-name" ] } ] }

    Pour créer un IAM rôle doté des autorisations appropriées pour accéder aux données d'écriture de la collection ou du domaine, consultez les sections Autorisations requises pour les domaines et Autorisations requises pour les collections.

Étape 1 : configurer le rôle du pipeline

Une fois les prérequis de votre pipeline Amazon DocumentDB définis, configurez le rôle de pipeline que vous souhaitez utiliser dans la configuration de votre pipeline et ajoutez les autorisations Amazon DocumentDB suivantes dans le rôle :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowS3ListObjectAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::{s3_bucket}" ], "Condition": { "StringLike": { "s3:prefix": "{s3_prefix}/*" } } }, { "Sid": "allowReadAndWriteToS3ForExportStream", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::{s3_bucket}/{s3_prefix}/*" ] }, { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": ["arn:aws:secretsmanager:{region}:{account-id}:secret:secret-name"] }, { "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:{account-id}:network-interface/*", "arn:aws:ec2:*:{account-id}:subnet/*", "arn:aws:ec2:*:{account-id}:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:Describe*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } } ] }

Vous devez fournir les EC2 autorisations Amazon ci-dessus sur le IAM rôle que vous utilisez pour créer le pipeline d' OpenSearch ingestion, car le pipeline utilise ces autorisations pour créer et supprimer une interface réseau dans votreVPC. Le pipeline ne peut accéder au cluster Amazon DocumentDB que via cette interface réseau.

Étape 2 : Création du pipeline

Vous pouvez ensuite configurer un pipeline d' OpenSearch ingestion comme le suivant, qui spécifie Amazon DocumentDB comme source. Notez que pour renseigner le nom de l'index, la getMetadata fonction l'utilise documentdb_collection comme clé de métadonnées. Si vous souhaitez utiliser un autre nom d'index sans la getMetadata méthode, vous pouvez utiliser la configurationindex: "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: sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" 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" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" refresh_interval: PT1H

Vous pouvez utiliser un plan Amazon DocumentDB préconfiguré pour créer ce pipeline. Pour de plus amples informations, veuillez consulter Utiliser des plans pour créer un pipeline.

Si vous utilisez le AWS Management Console pour créer votre pipeline, vous devez également l'attacher à votre pipeline VPC afin d'utiliser Amazon DocumentDB comme source. Pour ce faire, accédez à la section Configuration du réseau, cochez la VPC case Joindre à et choisissez l'une CIDR des options par défaut proposées, ou sélectionnez la vôtre. Vous pouvez utiliser n'importe quel espace CIDR d'adressage privé tel que défini dans les meilleures pratiques actuelles de RFC 1918.

Pour fournir une personnalisationCIDR, sélectionnez Autre dans le menu déroulant. Pour éviter toute collision d'adresses IP entre OpenSearch Ingestion et Amazon DocumentDB, assurez-vous que Amazon DocumentDB est différent CIDR de l'Amazon VPC CIDR DocumentDB for Ingestion. OpenSearch

Pour plus d'informations, voir Configuration de VPC l'accès à un pipeline.

Cohérence des données

Le pipeline garantit la cohérence des données en interrogeant ou en recevant en permanence les modifications du cluster Amazon DocumentDB et en mettant à jour les documents correspondants dans l' OpenSearchindex.

OpenSearch L'ingestion prend en charge end-to-end la reconnaissance afin de garantir la durabilité des données. Lorsqu'un pipeline lit des instantanés ou des flux, il crée dynamiquement des partitions pour un traitement parallèle. Le pipeline marque une partition comme terminée lorsqu'il reçoit un accusé de réception après avoir ingéré tous les enregistrements du OpenSearch domaine ou de la collection.

Si vous souhaitez intégrer des données dans une collection de recherche OpenSearch sans serveur, vous pouvez générer un identifiant de document dans le pipeline. Si vous souhaitez intégrer des données dans une collection de séries chronologiques OpenSearch sans serveur, notez que le pipeline ne génère pas d'identifiant de document. Vous devez donc l'omettre document_id: "${getMetadata(\"primary_key\")}" dans la configuration de votre récepteur de pipeline.

Un pipeline d' OpenSearch ingestion fait également correspondre les actions des événements entrants aux actions d'indexation groupées correspondantes pour faciliter l'ingestion de documents. Cela permet de garantir la cohérence des données, de sorte que chaque modification de données dans Amazon DocumentDB soit conciliée avec les modifications de document correspondantes dans. OpenSearch

Types de données de mappage

OpenSearch Le service mappe dynamiquement les types de données de chaque document entrant au type de données correspondant dans Amazon DocumentDB. Le tableau suivant montre comment OpenSearch Service mappe automatiquement les différents types de données.

Type de données OpenSearch Amazon DocumentDB
Entier

OpenSearch mappe automatiquement les valeurs entières d'Amazon DocumentDB en nombres entiers. OpenSearch

OpenSearch mappe dynamiquement le champ en fonction du premier document envoyé. Si vous avez plusieurs types de données pour le même attribut dans Amazon DocumentDB, le mappage automatique risque d'échouer.

Par exemple, si votre premier document possède un attribut long et qu'un document ultérieur possède le même attribut sous forme de nombre entier, le second document OpenSearch ne parvient pas à être ingéré. Dans ces cas, vous devez fournir un modèle de mappage explicite qui choisit le type de numéro le plus flexible, tel que le suivant :

{ "template": { "mappings": { "properties": { "MixedNumberField": { "type": "float" } } } } }

Amazon DocumentDB prend en charge les nombres entiers.

Long

OpenSearch mappe automatiquement les valeurs longues d'Amazon DocumentDB en valeurs longues. OpenSearch

OpenSearch mappe dynamiquement le champ en fonction du premier document envoyé. Si vous avez plusieurs types de données pour le même attribut dans Amazon DocumentDB, le mappage automatique risque d'échouer.

Par exemple, si votre premier document possède un attribut long et qu'un document ultérieur possède le même attribut sous forme de nombre entier, le second document OpenSearch ne parvient pas à être ingéré. Dans ces cas, vous devez fournir un modèle de mappage explicite qui choisit le type de numéro le plus flexible, tel que le suivant :

{ "template": { "mappings": { "properties": { "MixedNumberField": { "type": "float" } } } } }

Amazon DocumentDB prend en charge les fichiers longs.

Chaîne

OpenSearch mappe automatiquement les valeurs des chaînes sous forme de texte. Dans certaines situations, telles que les valeurs énumérées, vous pouvez mapper le type de mot clé.

L'exemple suivant montre comment mapper un attribut Amazon DocumentDB nommé PartType à un OpenSearch mot clé.

{ "template": { "mappings": { "properties": { "PartType": { "type": "keyword" } } } } }

Amazon DocumentDB prend en charge les chaînes de caractères.

Double

OpenSearch mappe automatiquement les valeurs doubles d'Amazon DocumentDB en OpenSearch doubles.

OpenSearch mappe dynamiquement le champ en fonction du premier document envoyé. Si vous avez plusieurs types de données pour le même attribut dans Amazon DocumentDB, le mappage automatique risque d'échouer.

Par exemple, si votre premier document possède un attribut long et qu'un document ultérieur possède le même attribut sous forme de nombre entier, le second document OpenSearch ne parvient pas à être ingéré. Dans ces cas, vous devez fournir un modèle de mappage explicite qui choisit le type de numéro le plus flexible, tel que le suivant :

{ "template": { "mappings": { "properties": { "MixedNumberField": { "type": "float" } } } } }
Amazon DocumentDB prend en charge les doublons.
Date

Par défaut, la date correspond à un entier dans OpenSearch. Vous pouvez définir un modèle de mappage personnalisé pour associer une date à une OpenSearch date.

{ "template": { "mappings": { "properties": { "myDateField": { "type": "date", "format": "epoch_second" } } } } }
Amazon DocumentDB prend en charge les dates.
Horodatage

Par défaut, l'horodatage correspond à un entier dans. OpenSearch Vous pouvez définir un modèle de mappage personnalisé pour associer une date à une OpenSearch date.

{ "template": { "mappings": { "properties": { "myTimestampField": { "type": "date", "format": "epoch_second" } } } } }
Amazon DocumentDB prend en charge les horodatages.
Booléen

OpenSearch mappe un type booléen Amazon DocumentDB en un type booléen. OpenSearch

Amazon DocumentDB prend en charge les attributs de type booléen.

Décimal

OpenSearch mappe les attributs de mappage Amazon DocumentDB aux champs imbriqués. Les mêmes mappages s'appliquent dans un champ imbriqué.

L'exemple suivant fait correspondre une chaîne d'un champ imbriqué à un mot clé saisi dans OpenSearch :

{ "template": { "mappings": { "properties": { "myDecimalField": { "type": "double" } } } } }

Grâce à ce mappage personnalisé, vous pouvez interroger et agréger le champ avec une précision à deux niveaux. La valeur d'origine conserve toute la précision des _source propriétés du OpenSearch document. Sans ce mappage, OpenSearch utilise le texte par défaut.

Amazon DocumentDB prend en charge les nombres décimaux.
Expression régulière Le type regex crée des champs imbriqués. Il s'agit notamment <myFieldName>.pattern de et<myFieldName>.options.

Amazon DocumentDB prend en charge les expressions régulières.

Données binaires

OpenSearch mappe automatiquement les données binaires Amazon DocumentDB en OpenSearch texte. Vous pouvez fournir un mappage pour les écrire sous forme de champs binaires OpenSearch.

L'exemple suivant montre comment mapper un champ Amazon DocumentDB nommé imageData à un champ OpenSearch binaire.

{ "template": { "mappings": { "properties": { "imageData": { "type": "binary" } } } } }
Amazon DocumentDB prend en charge les champs de données binaires.
ObjectId Champs présentant un type de objectId mappage vers des champs de OpenSearch texte. La valeur sera la représentation sous forme de chaîne deobjectId. Amazon DocumentDB prend en charge. objectIds
Null

OpenSearch peut ingérer des documents avec le type nul Amazon DocumentDB. Elle enregistre la valeur sous forme de valeur nulle dans le document. Il n'existe aucun mappage pour ce type, et ce champ n'est ni indexé ni consultable.

Si le même nom d'attribut est utilisé pour un type nul, puis change ultérieurement pour un type différent, tel qu'une chaîne, OpenSearch crée un mappage dynamique pour la première valeur non nulle. Les valeurs suivantes peuvent toujours être des valeurs nulles Amazon DocumentDB.

Amazon DocumentDB prend en charge les champs de type nul.
Non défini

OpenSearch peut ingérer des documents dont le type est indéfini Amazon DocumentDB. Elle enregistre la valeur sous forme de valeur nulle dans le document. Il n'existe aucun mappage pour ce type, et ce champ n'est ni indexé ni consultable.

Si le même nom de champ est utilisé pour un type non défini, puis change ultérieurement pour un type différent, tel qu'une chaîne, OpenSearch crée un mappage dynamique pour la première valeur non définie. Les valeurs suivantes peuvent toujours être des valeurs non définies d'Amazon DocumentDB.

Amazon DocumentDB prend en charge les champs de type non définis.
MinKey

OpenSearch peut ingérer des documents de type Amazon minKey DocumentDB. Elle enregistre la valeur sous forme de valeur nulle dans le document. Il n'existe aucun mappage pour ce type, et ce champ n'est ni indexé ni consultable.

Si le même nom de champ est utilisé pour un minKey type, puis change ultérieurement pour un type différent, tel qu'une chaîne, OpenSearch crée un mappage dynamique pour la première minKey valeur non définie. Les valeurs suivantes peuvent toujours être des valeurs Amazon DocumentDB. minKey

Amazon DocumentDB prend en charge les champs minKey de type.
MaxKey

OpenSearch peut ingérer des documents de type Amazon maxKey DocumentDB. Elle enregistre la valeur sous forme de valeur nulle dans le document. Il n'existe aucun mappage pour ce type, et ce champ n'est ni indexé ni consultable.

Si le même nom de champ est utilisé pour un maxKey type, puis change ultérieurement pour un type différent, tel qu'une chaîne, OpenSearch crée un mappage dynamique pour la première maxKey valeur non définie. Les valeurs suivantes peuvent toujours être des valeurs Amazon DocumentDB. maxKey

Amazon DocumentDB prend en charge les champs maxKey de type.

Nous vous recommandons de configurer la file d'attente des lettres mortes (DLQ) dans votre pipeline d' OpenSearch ingestion. Si vous avez configuré la file d'attente, le OpenSearch service envoie tous les documents défaillants qui ne peuvent pas être ingérés en raison d'échecs de mappage dynamique vers la file d'attente.

En cas d'échec des mappages automatiques, vous pouvez utiliser template_type et template_content dans la configuration de votre pipeline pour définir des règles de mappage explicites. Vous pouvez également créer des modèles de mappage directement dans votre domaine de recherche ou votre collection avant de démarrer le pipeline.

Limites

Tenez compte des limites suivantes lorsque vous configurez un pipeline d' OpenSearch ingestion pour Amazon DocumentDB :

  • L'intégration d' OpenSearch ingestion avec Amazon DocumentDB ne prend actuellement pas en charge l'ingestion entre régions. Votre cluster Amazon DocumentDB et votre pipeline OpenSearch d'ingestion doivent être identiques. Région AWS

  • L'intégration d' OpenSearch ingestion avec Amazon DocumentDB ne prend actuellement pas en charge l'ingestion entre comptes. Votre cluster Amazon DocumentDB et votre pipeline OpenSearch d'ingestion doivent être identiques. Compte AWS

  • Un pipeline d' OpenSearch ingestion ne prend en charge qu'un seul cluster Amazon DocumentDB comme source.

  • L'intégration d' OpenSearch ingestion avec Amazon DocumentDB prend spécifiquement en charge les clusters basés sur des instances Amazon DocumentDB. Il ne prend pas en charge les clusters élastiques Amazon DocumentDB.

  • L'intégration d' OpenSearch ingestion est uniquement prise en charge en AWS Secrets Manager tant que mécanisme d'authentification pour votre cluster Amazon DocumentDB.

  • Vous ne pouvez pas mettre à jour la configuration du pipeline existante pour ingérer des données provenant d'une autre base de données ou d'une autre collection. Vous devez plutôt créer un nouveau pipeline.