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é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 Services (AWS) 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 dont le TTL a expiré. 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. Le TTL simplifie 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.
AWS Command Line Interface (AWS CLI) 1.7 ou version ultérieure, installée et configurée sous 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
Amazon DynamoDB Streams
Amazon Data Firehose
AWS Lambda
Amazon S3

Les éléments sont supprimés par TTL.
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
AWS CLI — L'interface de ligne de commande AWS (AWS CLI) est un outil unifié permettant de gérer vos services AWS.
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 TTL vous aide à définir un 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.
AWS Lambda — 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 les éléments d' GitHub archivage vers S3 à l'aide du référentiel TTL DynamoDB
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez une table DynamoDB. | Utilisez l'AWS CLI pour créer une table dans DynamoDB appelée.
| Architecte cloud, développeur d'applications |
Activez DynamoDB TTL. | Utilisez l'AWS CLI pour activer DynamoDB TTL pour l'attribut.
| Architecte cloud, développeur d'applications |
Activez un flux DynamoDB. | Utilisez l'AWS CLI pour activer un flux DynamoDB pour
Ce flux contiendra des enregistrements pour les nouveaux éléments, les éléments mis à jour, les éléments supprimés et les éléments supprimés par TTL. 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 la CLI AWS pour créer un compartiment S3 de destination dans votre région AWS, en le
Assurez-vous que le nom de votre compartiment S3 est unique au monde, car l'espace de noms est partagé par tous les comptes AWS. | 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 rôle IAM 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= Le nom de votre rôle IAM (ce pilote utilise
Si le rôle IAM 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 à l'aide de la CLI AWS 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 ressources AWS. | 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 de l'ARN du rôle d'exécution Lambda. Pour obtenir l'ARN, 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 l'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 ImportantPour 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/
.