View a markdown version of this page

Gestion des modifications avec rupture apportées à votre index - Amazon DynamoDB

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.

Gestion des modifications avec rupture apportées à votre index

OpenSearch peut ajouter dynamiquement de nouveaux attributs à votre index. Cependant, une fois que votre modèle de mappage a été défini pour une clé donnée, vous devez prendre des mesures supplémentaires pour le modifier. En outre, si votre modification vous oblige à retraiter toutes les données de votre table DynamoDB, vous devrez prendre des mesures pour lancer une nouvelle exportation.

Note

Dans toutes ces options, vous pouvez toujours rencontrer des problèmes si votre table DynamoDB présente des conflits de type avec le modèle de mappage que vous avez spécifié. Assurez-vous qu'une file d'attente de lettres mortes (DLQ) est activée (même en cours de développement). Cela permet de comprendre plus facilement ce qui ne va pas avec l'enregistrement qui provoque un conflit lors de son indexation dans votre index le OpenSearch.

Comment ça marche

Voici un bref aperçu des mesures prises lors de la gestion des modifications de rupture apportées à votre index. Consultez les procédures détaillées dans les sections qui suivent.

  • Stop and start the pipeline : cette option réinitialise l’état du pipeline, qui redémarrera avec une nouvelle exportation complète. Il n’est pas destructif et ne supprime donc pas votre index ni aucune donnée dans DynamoDB. Si vous ne créez pas un nouvel index avant cela, vous risquez de rencontrer un grand nombre d’erreurs dues à des conflits de versions, car l’exportation tente d’insérer des documents plus anciens que le document _version actuel dans l’index. Vous pouvez ignorer ces erreurs en toute sécurité. Le pipeline ne vous sera pas facturé pendant qu’il est arrêté.

  • Mettre à jour le pipeline  : cette option met à jour la configuration du pipeline selon une blue/green approche, sans perte d'état. Si vous apportez des modifications importantes à votre pipeline (par exemple en ajoutant de nouveaux itinéraires, de nouveaux index ou de nouvelles clés à des index existants), vous devrez peut-être effectuer une réinitialisation complète du pipeline et recréer votre index. Cette option ne permet pas d’effectuer une exportation complète.

  • Delete and recreate the index : cette option supprime vos données et les paramètres de mappage de votre index. Vous devez effectuer cette opération avant d’apporter des modifications de rupture à vos mappages. Cela interrompra toutes les applications qui s’appuient sur l’index jusqu’à ce que celui-ci soit recréé et synchronisé. La suppression de l’index ne lance pas une nouvelle exportation. Vous ne devez supprimer votre index qu’après avoir mis à jour votre pipeline. Dans le cas contraire, il se peut que votre index soit recréé avant que vous ne mettiez à jour vos paramètres.

Supprimez votre index et réinitialisez le pipeline (option centrée sur le pipeline)

Cette méthode est souvent l’option la plus rapide si vous êtes encore en phase de développement. Vous allez supprimer votre index dans OpenSearch Service, puis arrêter et démarrer votre pipeline pour lancer une nouvelle exportation de toutes vos données. Cela garantit qu’aucun modèle de mappage n’entre en conflit avec les index existants et qu’aucune perte de données n’est due à une table traitée incomplète.

  1. Arrêtez le pipeline soit via le Console de gestion AWS, soit en utilisant l'opération d'StopPipelineAPI avec le AWS CLI ou un SDK.

  2. Mettez à jour la configuration de votre pipeline avec vos nouvelles modifications.

  3. Supprimez votre index dans OpenSearch Service, soit via un appel d'RESTAPI, soit via votre OpenSearch tableau de bord.

  4. Démarrez le pipeline soit via la console, soit en utilisant l'opération d'StartPipelineAPI avec le AWS CLI ou un SDK.

    Note

    Cela initie une nouvelle exportation complète, qui entraînera des coûts supplémentaires.

  5. Surveillez tout problème inattendu, car une nouvelle exportation est générée pour créer le nouvel index.

  6. Vérifiez que l'indice correspond à vos attentes en matière OpenSearch de service.

Une fois l’exportation terminée et la lecture à partir du flux reprise, les données de votre table DynamoDB seront désormais disponibles dans l’index.

Recréez votre index et réinitialisez le pipeline (option centrée sur l’index)

Cette méthode fonctionne bien si vous devez effectuer de nombreuses itérations sur la conception de l'index dans OpenSearch Service avant de reprendre le pipeline depuis DynamoDB. Cela peut être utile pour le développement lorsque vous souhaitez itérer très rapidement sur vos modèles de recherche et éviter d’attendre que de nouvelles exportations soient effectuées entre chaque itération.

  1. Arrêtez le pipeline soit via le Console de gestion AWS, soit en appelant l'opération d'StopPipelineAPI à l'aide du AWS CLI ou d'un SDK.

  2. Supprimez et recréez votre index à l' OpenSearch aide du modèle de mappage que vous souhaitez utiliser. Vous pouvez insérer manuellement des exemples de données pour confirmer que vos recherches fonctionnent comme prévu. Si vos exemples de données sont susceptibles d’entrer en conflit avec des données provenant de DynamoDB, veillez à les supprimer avant de passer à l’étape suivante.

  3. Si votre pipeline contient un modèle d'indexation, supprimez-le ou remplacez-le par celui que vous avez déjà créé dans OpenSearch Service. Assurez-vous que le nom de votre index correspond au nom indiqué dans le pipeline.

  4. Démarrez le pipeline soit via la console, soit en appelant l'opération d'StartPipelineAPI à l'aide du SDK AWS CLI ou d'un SDK.

    Note

    Cela initie une nouvelle exportation complète, qui entraînera des coûts supplémentaires.

  5. Surveillez tout problème inattendu, car une nouvelle exportation est générée pour créer le nouvel index.

Une fois l’exportation terminée et la lecture à partir du flux reprise, les données de votre table DynamoDB seront désormais disponibles dans l’index.

Création d’un nouvel index et d’un nouveau récepteur (option en ligne)

Cette méthode fonctionne bien si vous devez mettre à jour votre modèle de mappage alors que vous utilisez actuellement votre index en production. Cela crée un tout nouvel index, vers lequel vous devrez déplacer votre application une fois celle-ci synchronisée et validée.

Note

Cela créera un autre utilisateur sur le flux. Cela peut être un problème si vous avez également d'autres consommateurs AWS Lambda ou des tables mondiales. Vous devrez peut-être suspendre les mises à jour de votre pipeline existant pour créer la capacité de charger le nouvel index.

  1. Créez un nouveau pipeline avec de nouveaux paramètres et un nom d’index différent.

  2. Surveillez le nouvel index pour détecter tout problème imprévu.

  3. Basculez l’application vers le nouvel index.

  4. Arrêtez et supprimez l’ancien pipeline après avoir vérifié que tout fonctionne correctement.

Bonnes pratiques pour éviter et déboguer les conflits de type

  • Utilisez toujours une file d’attente de lettres mortes (DLQ) pour faciliter le débogage en cas de conflits de types.

  • Utilisez toujours un modèle d’index avec des mappages et définissez include_keys. Bien que OpenSearch Service mappe dynamiquement de nouvelles clés, cela peut entraîner des problèmes liés à des comportements inattendus (par exemple, s'attendre à ce que quelque chose soit unGeoPoint, mais il est créé en tant que string ouobject) ou à des erreurs (comme le fait d'numberavoir un composé d'une combinaison de long et de float valeurs).

  • Si vous devez continuer à utiliser votre index existant en production, vous pouvez également remplacer l’une des étapes de suppression d’index précédentes en renommant simplement votre index dans le fichier de configuration de votre pipeline. Cela crée un tout nouvel index. Votre application devra ensuite être mise à jour pour pointer vers le nouvel index une fois qu’elle sera terminée.

  • Si vous rencontrez un problème de conversion de type que vous résolvez avec un processeur, vous pouvez le tester avec UpdatePipeline. Pour ce faire, vous devez arrêter et démarrer ou traiter vos files d’attente de lettres mortes afin de corriger les documents précédemment ignorés qui contenaient des erreurs.