Maison > développement back-end > Tutoriel Python > Planification des sauvegardes Amazon DynamoDB avec Lambda, Python et Boto3

Planification des sauvegardes Amazon DynamoDB avec Lambda, Python et Boto3

Jennifer Aniston
Libérer: 2024-10-29 10:09:30
avant
999 Les gens l'ont consulté

Supposons que vous souhaitiez faire une sauvegarde d'une de vos tables DynamoDB tous les jours. Nous souhaitons également conserver les sauvegardes pendant une période spécifiée de time.Un moyen simple d'y parvenir est d'utiliser un Amazon CloudWatch Events règle pour déclencher quotidiennement une fonction AWS Lambda. Dans cet atelier pratique AWS, vous écrirez une fonction Lambda en Python en utilisant Boto3 bibliothèque. Cette configuration nécessite la configuration d'un rôle IAM, la définition d'un Règle CloudWatch et création d'une fonction Lambda.

屏幕截图 2024-10-29 094728.png

Créer la table DynamoDB

Vous pouvez certainement utiliser n'importe quelle table DynamoDB que vous avez dans votre compte pour cet exercice, mais si vous souhaitez en créer un à l'aide de l'AWS CLI, vous peut utiliser la commande suivante :

aws dynamodb create-table --table-name Person  --attribute-definitions AttributeName=id,AttributeType=N  --key-schema AttributeName=id,KeyType=HASH  --billing-mode=PAY_PER_REQUEST
Copier après la connexion
Copier après la connexion

Cela créera une table DynamoDB appelée Personne, avec un identifiant de clé primaire.

Créer le rôle d'exécution IAM

Toutes les fonctions Lambda nécessitent un rôle IAM qui définit le autorisations qui lui sont accordées. C'est ce qu'on appelle le rôle d'exécution de la fonction Lambda. Premièrement, nous allons parcourir le processus de création de notre rôle IAM pour Lambda fonction et créer la fonction Lambda elle-même. Nous utiliserons AWS Console de gestion pour cette tâche :

  1. Accédez à IAM.
  2. Accédez aux stratégies.
  3. Cliquez sur Créer une stratégie. .
  4. Sélectionnez l'onglet JSON.
  5. Remplacez le contenu par défaut par l'instruction JSON suivante :
{   "Version":"2012-10-17",   "Statement":[      {         "Effect":"Allow",         "Action":[            "logs:CreateLogGroup",            "logs:CreateLogStream",            "logs:PutLogEvents"         ],         "Resource":"arn:aws:logs:*:*:*"      },      {         "Action":[            "dynamodb:CreateBackup",            "dynamodb:DeleteBackup",            "dynamodb:ListBackups"         ],         "Effect":"Allow",         "Resource":"*"      }   ]}
Copier après la connexion

Cette déclaration accorde deux ensembles d'autorisations. Premièrement, il accorde le possibilité de se connecter à CloudWatch Logs. Avec cette autorisation, tout Python print() les déclarations s'afficheront dans CloudWatch Logs. Deuxièmement, nous accordons l'autorisation pour que la fonction Lambda crée, répertorie et supprime les sauvegardes DynamoDB sur toutes les tables.

  1. Cliquez sur Réviser la stratégie.
  2. Nommez cette stratégie LambdaBackupDynamoDBPolicy.
  3. Cliquez sur Créer une stratégie.

Maintenant que la politique est créée, vous devez créer un rôle auquel cette politique est attachée.

  1. Dans IAM, accédez à Rôles.
  2. Cliquez sur Créer un rôle.
  3. Sélectionnez le type d'entité de confiance : service AWS.
  4. Choisissez le service qui utilisera ce rôle : Lambda.
  5. Cliquez sur Suivant : Autorisations.
  6. Dans la zone de recherche, recherchez la LambdaBackupDynamoDBPolicy créée à l'étape précédente.
  7. Cochez la case à côté du nom de la stratégie.
  8. Cliquez sur Suivant : Balises.
  9. Cliquez sur Suivant : Révision.
  10. Nom du rôle : LambdaBackupDynamoDBRole.
  11. Cliquez sur Créer un rôle.
Cliquez sur Créer un rôle.

🎜>

Créons la fonction Lambda


Créons notre fonction Lambda !



  1. Naviguez vers Lambda.

  2. Cliquez sur Créer une fonction.

  3. Sélectionnez l'auteur à partir de zéro.

  4. Nom de la fonction : BackupDynamoDB.

  5. Exécution : Python 3.7.

  6. Sous Autorisations, sélectionnez Choisir ou créer un rôle d'exécution.

  7. Sous Rôle d'exécution, sélectionnez Utiliser un rôle existant.

  8. Sous Rôle d'exécution, sélectionnez Utiliser un rôle existant.
Sous Rôle existant, sélectionnez LambdaBackupDynamoDBRole, créé à l'étape précédente.
Cliquez sur Créer une fonction.


Coller le code source suivant dans l'éditeur de code de la fonction Lambda : Cliquez sur Enregistrer en haut à droite de l'écran.

Créer une règle CloudWatch


Ensuite, nous allons créer une règle CloudWatch pour planifier le Lambda fonction à exécuter à intervalles réguliers. Cela effectuera des sauvegardes du Table DynamoDB et supprimez les sauvegardes obsolètes.



  1. Accédez à CloudWatch.

  2. Accédez à Événements > Règles.

  3. Cliquez sur Créer une règle.

  4. Planifiez l'exécution de l'événement à l'intervalle souhaité (par exemple, tous les 1 jour).

  5. Cliquez sur Ajouter une cible.
  6. aws dynamodb create-table --table-name Person  --attribute-definitions AttributeName=id,AttributeType=N  --key-schema AttributeName=id,KeyType=HASH  --billing-mode=PAY_PER_REQUEST
    Copier après la connexion
    Copier après la connexion
    Sous la fonction Lambda, sélectionnez BackupDynamoDB.
  7. Sous Configurer l'entrée, sélectionnez Constante (texte JSON).
  8. Définissez la valeur sur l'instruction JSON :

  9. Cliquez sur Configurer les détails.

  10. Nom : BackupDynamoDBDaily (ou ce que vous préférez).

  11. Cliquez sur Créer une règle.

  12. Attendez pour que la règle CloudWatch déclenche la prochaine tâche de sauvegarde que vous avez programmé. Si tu es impatient comme moi, tu peux fixer le planning intervalle à 1 minute, et vous le verrez s'exécuter plus tôt.
Vérifiez que la tâche de sauvegarde planifiée a été exécutée à l'aide de CloudWatch Logs. Le groupe de journaux sera nommé /aws/lambda/BackupDynamoDB, avec un flux pour chaque appel.

Vérifiez que le fichier de sauvegarde existe dans la liste des sauvegardes DynamoDB.

<🎜><🎜> <🎜><🎜><🎜>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:pluralsight.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal