Planifiez des tâches pour Amazon RDS pour Postgre SQL et Aurora Postgre à l'aide de SQL Lambda et Secrets Manager - Recommandations AWS

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.

Planifiez des tâches pour Amazon RDS pour Postgre SQL et Aurora Postgre à l'aide de SQL Lambda et Secrets Manager

Créée par Yaser Raja () AWS

Environnement : PoC ou pilote

Source : Bases de données : relationnelles

Cible : Poster On SQL AWS

Type R : N/A

Charge de travail : Open source

Technologies : Bases de données

AWSservices : AWS Lambda RDS ; Amazon ; AWS Secrets Manager ; Amazon Aurora

Récapitulatif

Pour les bases de données locales et les bases de données hébergées sur des instances Amazon Elastic Compute Cloud (AmazonEC2), les administrateurs de base de données utilisent souvent l'utilitaire cron pour planifier les tâches.

Par exemple, une tâche d'extraction de données ou une tâche de purge de données peuvent être facilement planifiées à l'aide de cron. Pour ces tâches, les informations d'identification de base de données sont généralement codées en dur ou stockées dans un fichier de propriétés. Toutefois, lorsque vous migrez vers Amazon Relational Database Service (RDSAmazon) ou Amazon Aurora SQL Postgre -Compatible Edition, vous ne pouvez plus vous connecter à l'instance hôte pour planifier des tâches cron. 

Ce modèle décrit comment utiliser AWS Lambda et AWS Secrets Manager pour planifier des tâches pour les bases de données compatibles Amazon RDS for Postgre et SQL Aurora Postgre après SQL la migration.  

Conditions préalables et limitations

Prérequis

  • Un AWS compte actif 

  • Une base de données compatible avec Amazon RDS for Postgre SQL ou Aurora Postgre SQL

Limites

  • Une tâche doit être terminée dans les 15 minutes, ce qui correspond au délai d'expiration de la fonction Lambda. Pour les autres limites, consultez la documentation AWSLambda.

  • Le code du job doit être écrit dans un langage compatible avec Lambda.

Architecture

Pile technologique source

Cette pile contient des jobs écrits dans des langages tels que Bash, Python et Java. Les informations d'identification de la base de données sont stockées dans le fichier de propriétés et la tâche est planifiée à l'aide de Linux cron.

Pile technologique cible

Cette pile possède une fonction Lambda qui utilise les informations d'identification stockées dans Secrets Manager pour se connecter à la base de données et effectuer l'activité. La fonction Lambda est lancée à l'intervalle planifié à l'aide d'Amazon CloudWatch Events.

Architecture cible

CloudWatch événement démarrant une fonction Lambda qui planifie des tâches pour l'RDSinstance de base de données.

Outils

  • AWSLambda est un service de calcul qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. AWSLambda exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de quelques requêtes par jour à des milliers par seconde. Vous ne payez que pour le temps de calcul que vous consommez ; aucun frais n'est facturé lorsque votre code n'est pas en cours d'exécution. Avec AWS Lambda, vous pouvez exécuter du code pour pratiquement n'importe quel type d'application ou de service principal sans aucune administration. AWSLambda exécute votre code sur une infrastructure informatique à haute disponibilité et gère toutes les ressources de calcul, y compris la maintenance des serveurs et des systèmes d'exploitation, le provisionnement des capacités et le dimensionnement automatique, la surveillance du code et la journalisation. Il vous suffit de fournir votre code dans l'un des langages pris en charge par AWS Lambda.

  • Amazon CloudWatch Events fournit un flux en temps quasi réel d'événements système décrivant les modifications apportées aux AWS ressources. À l'aide de règles simples que vous pouvez configurer rapidement, vous pouvez associer des événements et les acheminer vers une ou plusieurs fonctions ou flux cibles. CloudWatch Events prend conscience des changements opérationnels au fur et à mesure qu'ils se produisent. Il répond à ces changements opérationnels et prend les mesures correctives nécessaires, en envoyant des messages pour répondre à l'environnement, en activant des fonctions, en apportant des modifications et en capturant des informations d'état. Vous pouvez également utiliser les CloudWatch événements pour planifier des actions automatisées qui se déclenchent automatiquement à certains moments à l'aide d'expressions cron ou rate.

  • AWSSecrets Manager vous aide à protéger les secrets pour accéder à vos applications, services et ressources informatiques. Vous pouvez facilement faire pivoter, gérer et récupérer les informations d'identification, les API clés et autres secrets des bases de données tout au long de leur cycle de vie. Les utilisateurs et les applications récupèrent les secrets en appelant Secrets ManagerAPIs, ce qui élimine le besoin de coder en dur les informations sensibles en texte brut. Secrets Manager propose une rotation secrète avec intégration intégrée pour AmazonRDS, Amazon Redshift et Amazon DocumentDB. Le service est extensible à d'autres types de secrets, notamment API les clés et les OAuth jetons. Secrets Manager vous permet de contrôler l'accès aux secrets à l'aide d'autorisations détaillées et d'auditer la rotation des secrets de manière centralisée pour les ressources dans le AWS cloud, les services tiers et sur site.

Épopées

TâcheDescriptionCompétences requises

Créez un utilisateur de base de données pour la fonction Lambda.

Il est recommandé d'utiliser des utilisateurs de base de données distincts pour les différentes parties de votre application. S'il existe déjà un utilisateur de base de données distinct pour vos tâches cron, utilisez-le. Dans le cas contraire, créez un nouvel utilisateur de base de données. Pour plus d'informations, consultez Gérer les SQL utilisateurs et les rôles de Postgre (article de AWS blog).

DBA

Stockez les informations d'identification de la base de données sous forme de secret dans Secrets Manager.

Suivez les instructions de la section Création d'un secret de base de données (documentation Secrets Manager).

DBA, DevOps
TâcheDescriptionCompétences requises

Choisissez un langage de programmation pris en charge par AWS Lambda.

Pour obtenir la liste des langages pris en charge, consultez les environnements d'exécution Lambda (documentation Lambda).

Developer

Écrivez la logique pour récupérer les informations d'identification de la base de données depuis Secrets Manager.

Pour un exemple de code, consultez Comment fournir en toute sécurité des informations d'identification de base de données aux fonctions Lambda à l'aide de AWS Secrets Manager (article de AWS blog).

Developer

Écrivez la logique pour exécuter l'activité de base de données planifiée.

Migrez votre code existant pour la tâche de planification que vous utilisez sur site vers la fonction AWS Lambda. Pour plus d'informations, consultez Déploiement de fonctions Lambda (documentation Lambda).

Developer
TâcheDescriptionCompétences requises

Créez le package de déploiement de la fonction Lambda.

Ce paquet contient le code et ses dépendances. Pour plus d'informations, consultez Packages de déploiement (documentation Lambda).

Developer

Créez la fonction Lambda.

Dans la console AWS Lambda, choisissez Create function, entrez un nom de fonction, choisissez l'environnement d'exécution, puis choisissez Create function.

DevOps

Charger un package de déploiement

Choisissez la fonction Lambda que vous avez créée pour ouvrir sa configuration. Vous pouvez écrire votre code directement dans la section du code ou télécharger votre package de déploiement. Pour télécharger votre package, accédez à la section Code de fonction, choisissez le type d'entrée de code pour télécharger un fichier .zip, puis sélectionnez le package.

DevOps

Configurez la fonction Lambda selon vos besoins.

Par exemple, vous pouvez définir le paramètre Timeout sur la durée prévue pour votre fonction Lambda. Pour plus d'informations, consultez Configuration des options de fonction (documentation Lambda).

DevOps

Définissez les autorisations pour le rôle de fonction Lambda afin d'accéder à Secrets Manager.

Pour obtenir des instructions, voir Utiliser des secrets dans les fonctions AWS Lambda (documentation Secrets Manager).

DevOps

Testez la fonction Lambda.

Lancez la fonction manuellement pour vous assurer qu'elle fonctionne comme prévu.

DevOps
TâcheDescriptionCompétences requises

Créez une règle pour exécuter votre fonction Lambda selon une planification.

Planifiez la fonction Lambda à l'aide CloudWatch d'Events. Pour obtenir des instructions, voir Planifier des fonctions Lambda à l'aide d' CloudWatch événements (didacticiel sur CloudWatch les événements).

DevOps

Ressources connexes