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.
Archivez automatiquement les éléments sur Amazon S3 à l'aide de DynamoDB TTL
Créée par Tabby Ward () AWS
Référentiel de code : archiver des éléments dans S3 à l'aide de DynamoDB TLL | Environnement : PoC ou pilote | Technologies : modernisation ; bases de données ; système sans serveur ; stockage et sauvegarde ; gestion des coûts |
Charge de travail : Open source | AWSservices : Amazon S3 ; Amazon DynamoDB ; Amazon Kinesis ; Lambda AWS |
Récapitulatif
Ce modèle fournit des étapes pour supprimer les anciennes données d'une table Amazon DynamoDB et les archiver dans un bucket Amazon Simple Storage Service (Amazon S3) sur Amazon Web AWS Services () sans avoir à gérer un parc de serveurs.
Ce modèle utilise Amazon DynamoDB Time to Live TTL () pour supprimer automatiquement les anciens éléments et Amazon DynamoDB Streams pour capturer les articles expirés. TTL Il connecte ensuite DynamoDB Streams à AWS Lambda, qui exécute le code sans provisionner ni gérer de serveurs.
Lorsque de nouveaux éléments sont ajoutés au flux DynamoDB, la fonction Lambda est lancée et écrit les données dans un flux de diffusion Amazon Data Firehose. Firehose fournit une solution simple et entièrement gérée pour charger les données sous forme d'archive dans Amazon S3.
DynamoDB est souvent utilisé pour stocker des données de séries chronologiques, telles que les données de clics sur les pages Web ou les données de l'Internet des objets (IoT) provenant de capteurs et d'appareils connectés. Plutôt que de supprimer les éléments les moins fréquemment consultés, de nombreux clients souhaitent les archiver à des fins d'audit. TTLsimplifie cet archivage en supprimant automatiquement les éléments en fonction de l'attribut timestamp.
Les éléments supprimés par TTL peuvent être identifiés dans DynamoDB Streams, qui capture une séquence chronologique de modifications au niveau des éléments et stocke la séquence dans un journal pendant 24 heures au maximum. Ces données peuvent être consommées par une fonction Lambda et archivées dans un compartiment Amazon S3 afin de réduire les coûts de stockage. Pour réduire davantage les coûts, des règles de cycle de vie Amazon S3 peuvent être créées pour transférer automatiquement les données (dès leur création) vers les classes de stockage
Conditions préalables et limitations
Prérequis
Un compte AWS actif.
AWSInterface de ligne de commande (AWSCLI) 1.7 ou version ultérieure, installée et configurée sur macOS, Linux ou Windows.
Python 3.7
ou version ultérieure. Boto3
, installé et configuré. Si Boto3 n'est pas déjà installé, exécutez la python -m pip install boto3
commande pour l'installer.
Architecture
Pile technologique
Amazon DynamoDB
Streams Amazon DynamoDB
Amazon Data Firehose
AWSLambda
Amazon S3
Les éléments sont supprimés parTTL.
Le déclencheur de flux DynamoDB invoque la fonction de processeur de flux Lambda.
La fonction Lambda place les enregistrements dans le flux de diffusion Firehose au format batch.
Les enregistrements de données sont archivés dans le compartiment S3.
Outils
AWSCLI— L'interface de ligne de AWS commande (AWSCLI) est un outil unifié permettant de gérer vos AWS services.
Amazon DynamoDB — Amazon DynamoDB est une base de données de documents et de valeurs clés qui fournit des performances à un chiffre en millisecondes à n'importe quelle échelle.
Amazon DynamoDB Time to Live TTL () — Amazon DynamoDB vous aide à définir un TTL horodatage par article afin de déterminer à quel moment un article n'est plus nécessaire.
Amazon DynamoDB Streams — Amazon DynamoDB Streams capture une séquence chronologique de modifications au niveau des éléments dans n'importe quelle table DynamoDB et stocke ces informations dans un journal pendant 24 heures maximum.
Amazon Data Firehose — Amazon Data Firehose est le moyen le plus simple de charger de manière fiable des données de streaming dans des lacs de données, des magasins de données et des services d'analyse.
AWSLambda — AWS Lambda exécute du code sans qu'il soit nécessaire de configurer ou de gérer des serveurs. Vous payez uniquement pour le temps de calcul consommé.
Amazon S3 — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets qui offre une évolutivité, une disponibilité des données, une sécurité et des performances de pointe.
Code
Le code de ce modèle est disponible dans le référentiel GitHub Archiver les éléments vers S3 à l'aide de TTL DynamoDB
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez une table DynamoDB. | Utilisez le AWS CLI pour créer une table dans DynamoDB appelée.
| Architecte cloud, développeur d'applications |
Activez DynamoDBTTL. | Utilisez le AWS CLI pour activer DynamoDB pour l'TTLattribut.
| Architecte cloud, développeur d'applications |
Activez un flux DynamoDB. | Utilisez le AWS CLI pour activer un flux DynamoDB pour
Ce flux contiendra les enregistrements des nouveaux éléments, des éléments mis à jour, des éléments supprimés et des éléments supprimés parTTL. Les enregistrements des éléments supprimés par TTL contiennent un attribut de métadonnées supplémentaire pour les distinguer des éléments supprimés manuellement. Le Dans ce modèle, seuls les éléments supprimés par TTL sont archivés, mais vous ne pouvez archiver que les enregistrements dont le nom | Architecte cloud, développeur d'applications |
Tâche | Description | Compétences requises |
---|---|---|
Créez un compartiment S3. | Utilisez le AWS CLI pour créer un compartiment S3 de destination dans votre AWS région, en
Assurez-vous que le nom de votre compartiment S3 est unique au monde, car l'espace de noms est partagé par tous les AWS comptes. | Architecte cloud, développeur d'applications |
Créez une politique de cycle de vie de 30 jours pour le compartiment S3. |
| Architecte cloud, développeur d'applications |
Tâche | Description | Compétences requises |
---|---|---|
Créez et configurez un flux de diffusion Firehose. | Téléchargez et modifiez l'exemple de Ce code est écrit en Python et explique comment créer un flux de diffusion Firehose et un rôle AWS Identity and Access Management (IAM). Le IAM rôle aura une politique qui pourra être utilisée par Firehose pour écrire dans le compartiment S3 de destination. Pour exécuter le script, utilisez les arguments de commande et de ligne de commande suivants. Argument 1= Argument 2= Le nom de votre Firehose (ce pilote utilise.) Argument 3= IAM Le nom de votre rôle (ce pilote utilise
Si le IAM rôle spécifié n'existe pas, le script créera un rôle d'assume avec une politique de relation de confiance, ainsi qu'une politique accordant une autorisation Amazon S3 suffisante. Pour des exemples de ces politiques, consultez la section Informations supplémentaires. | Architecte cloud, développeur d'applications |
Vérifiez le flux de diffusion de Firehose. | Décrivez le flux de diffusion Firehose en utilisant le AWS CLI pour vérifier que le flux de diffusion a été créé avec succès.
| Architecte cloud, développeur d'applications |
Tâche | Description | Compétences requises |
---|---|---|
Créez une politique de confiance pour la fonction Lambda. | Créez un fichier de politique de confiance contenant les informations suivantes.
Cela donne à votre fonction l'autorisation d'accéder aux AWS ressources. | Architecte cloud, développeur d'applications |
Créez un rôle d'exécution pour la fonction Lambda. | Pour créer le rôle d'exécution, exécutez le code suivant.
| Architecte cloud, développeur d'applications |
Ajoutez une autorisation au rôle. | Pour ajouter une autorisation au rôle, utilisez la
| Architecte cloud, développeur d'applications |
Créez une fonction Lambda. | Compressez le
Lorsque vous créez la fonction Lambda, vous aurez besoin du rôle d'exécution Lambda. ARN Pour obtenir leARN, exécutez le code suivant.
Pour créer la fonction Lambda, exécutez le code suivant.
| Architecte cloud, développeur d'applications |
Configurez le déclencheur de la fonction Lambda. | Utilisez le AWS CLI pour configurer le déclencheur (DynamoDB Streams), qui appelle la fonction Lambda. La taille du lot de 400 permet d'éviter de rencontrer des problèmes de simultanéité Lambda.
| Architecte cloud, développeur d'applications |
Tâche | Description | Compétences requises |
---|---|---|
Ajoutez les articles dont l'horodatage a expiré au tableau des réservations. | Pour tester la fonctionnalité, ajoutez au tableau des éléments dont l'horodatage d'époque a expiré. La fonction Lambda est lancée lors des activités de DynamoDB Stream, et elle filtre l'événement pour identifier l'activité ou les éléments supprimés. Le flux de livraison Firehose transfère les articles vers un compartiment S3 de destination avec le Important : pour optimiser la récupération des données, configurez Amazon S3 avec le | Architecte du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez toutes les ressources. | Supprimez toutes les ressources pour vous assurer que les services que vous n'utilisez pas ne vous seront pas facturés. | Architecte cloud, développeur d'applications |
Ressources connexes
Informations supplémentaires
Création et configuration d'un flux de diffusion Firehose — Exemples de politiques
Exemple de document de politique sur les relations de confiance Firehose
firehose_assume_role = { 'Version': '2012-10-17', 'Statement': [ { 'Sid': '', 'Effect': 'Allow', 'Principal': { 'Service': 'firehose.amazonaws.com' }, 'Action': 'sts:AssumeRole' } ] }
Exemple de politique d'autorisations S3
s3_access = { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "{your s3_bucket ARN}/*", "{Your s3 bucket ARN}" ] } ] }
Tester la fonctionnalité — Configuration Amazon S3
La configuration Amazon S3 avec les éléments suivants Prefix
ErrorOutputPrefix
est choisie pour optimiser la récupération des données.
prefix
firehosetos3example/year=! {timestamp: yyyy}/month=! {timestamp:MM}/day=! {timestamp:dd}/hour=!{timestamp:HH}/
Firehose crée d'abord un dossier de base appelé firehosetos3example
directement sous le compartiment S3. Il évalue ensuite les expressions!{timestamp:yyyy}
,!{timestamp:MM}
, !{timestamp:dd}
et !{timestamp:HH}
en fonction de l'année, du mois, du jour et de l'heure en utilisant le DateTimeFormatter
Par exemple, un horodatage d'arrivée approximatif de 1604683577 dans Unix Epoch Time équivaut à,, et. year=2020
month=11
day=06
hour=05
Par conséquent, l'emplacement dans Amazon S3, où les enregistrements de données sont livrés, est évalué àfirehosetos3example/year=2020/month=11/day=06/hour=05/
.
ErrorOutputPrefix
firehosetos3erroroutputbase/!{firehose:random-string}/!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd}/
Le ErrorOutputPrefix
résultat est un dossier de base appelé firehosetos3erroroutputbase
directement sous le compartiment S3. L'expression est !{firehose:random-string}
évaluée en une chaîne aléatoire de 11 caractères telle que. ztWxkdg3Thg
L'emplacement d'un objet Amazon S3 où les enregistrements défaillants sont livrés peut être évalué àfirehosetos3erroroutputbase/ztWxkdg3Thg/processing-failed/2020/11/06/
.