Diffusion de données vers des tables avec Amazon Data Firehose - Amazon Simple Storage Service

Diffusion de données vers des tables avec Amazon Data Firehose

Amazon Data Firehose est un service entièrement géré qui permet de fournir des données de streaming en temps réel à des destinations telles qu’Amazon S3, Amazon Redshift, Amazon OpenSearch Service, Splunk, les tables Apache Iceberg, ainsi que les points de terminaison HTTP personnalisés ou appartenant à des fournisseurs de services tiers pris en charge. Avec Amazon Data Firehose, vous n’avez pas besoin d’écrire d’applications ni de gérer de ressources. Vous configurez vos producteurs de données pour envoyer les données à Firehose, qui remet automatiquement les données à la destination que vous avez spécifiée. Vous pouvez également configurer Firehose pour transformer vos données avant de les remettre. Pour en savoir plus sur Amazon Data Firehose, consultez Qu’est-ce qu’Amazon Data Firehose ?

Procédez comme suit pour configurer le streaming Firehose vers des tables situées dans des compartiments de table S3 :

  1. Intégrez vos compartiments de tables avec les services d’analytique AWS.

  2. Configurez Firehose pour fournir des données dans vos tables S3. Pour ce faire, vous créez un rôle de service Gestion des identités et des accès AWS (IAM) qui permet à Firehose d’accéder à vos tables.

  3. Accordez des autorisations explicites de rôle de service Firehose sur votre table ou l’espace de noms de votre table. Pour plus d’informations, consultez Octroi des autorisations Lake Formation sur vos ressources de table.

  4. Créez un flux Firehose qui achemine les données vers votre table.

Création d’un rôle permettant à Firehose d’utiliser les tables S3 comme destination

Firehose a besoin d’un rôle de service IAM disposant d’autorisations spécifiques pour accéder aux tables AWS Glue et écrire des données dans les tables S3. Vous devez fournir ce rôle IAM lorsque vous créez un flux Firehose.

  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation de gauche, choisissez Politiques.

  3. Choisissez Créer une politique, puis JSON dans l’éditeur de politique.

  4. Ajoutez la politique en ligne suivante qui accorde des autorisations à toutes les bases de données et tables de votre catalogue de données. Si vous le souhaitez, vous pouvez accorder des autorisations à des tables et à des bases de données spécifiques uniquement. Pour utiliser cette politique, remplacez user input placeholders par vos propres informations.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "S3TableAccessViaGlueFederation", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetDatabase", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/*", "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog", "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/*", "arn:aws:glue:us-east-1:111122223333:table/*/*" ] }, { "Sid": "S3DeliveryErrorBucketPermission", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::error delivery bucket", "arn:aws:s3:::error delivery bucket/*" ] }, { "Sid": "RequiredWhenUsingKinesisDataStreamsAsSource", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-1:111122223333:stream/stream-name" }, { "Sid": "RequiredWhenDoingMetadataReadsANDDataAndMetadataWriteViaLakeformation", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" }, { "Sid": "RequiredWhenUsingKMSEncryptionForS3ErrorBucketDelivery", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/KMS-key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::error delivery bucket/prefix*" } } }, { "Sid": "LoggingInCloudWatch", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Sid": "RequiredWhenAttachingLambdaToFirehose", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:us-east-1:111122223333:function:function-name:function-version" ] } ] }

    Cette politique contient des instructions qui autorisent l’accès à Kinesis Data Streams, en invoquant des fonctions Lambda, et l’accès aux clés AWS KMS. Si vous n’utilisez aucune de ces ressources, vous pouvez supprimer les instructions correspondantes.

    Si la journalisation des erreurs est activée, Firehose envoie également les erreurs de remise de données à vos flux et à votre groupe de journaux CloudWatch. Pour cela, vous devez configurer les noms des flux de journaux et du groupe de journaux. Pour connaître les noms des flux de journaux et du groupe de journaux, consultez Surveillance d’Amazon Data Firehose à l’aide de CloudWatch Logs.

  5. Une fois que vous avez créé cette politique, créez un rôle IAM avec Service AWS comme Type d’entité approuvée.

  6. Pour Service ou cas d’utilisation, choisissez Kinesis. Pour Cas d’utilisation, choisissez Kinesis Firehose.

  7. Choisissez Suivant, puis sélectionnez la politique que vous avez créée précédemment.

  8. Donnez un nom à votre rôle. Passez en revue les détails de votre rôle, puis choisissez Créer un rôle. Ce rôle sera doté de la politique d’approbation suivante.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "firehose.amazonaws.com" ] } } ] }

Création d’un flux Firehose vers les tables S3

La procédure suivante montre comment créer un flux Firehose pour remettre des données dans les tables S3 à l’aide de la console. Les prérequis suivants sont nécessaires pour configurer un flux Firehose vers les tables S3.

Pour fournir des informations de routage à Firehose lorsque vous configurez un flux, vous utilisez votre espace de noms en tant que nom de base de données et le nom d’une table dans cet espace de noms. Vous pouvez utiliser ces valeurs dans la section Clé unique de la configuration d’un flux Firehose pour router les données vers une table unique. Vous pouvez également utiliser ces valeurs pour router vers une table à l’aide d’expressions de requête JSON. Pour plus d’informations, consultez Routage des enregistrements entrants vers une table Iceberg unique.

Pour configurer un flux Firehose vers les tables S3 (console)
  1. Ouvrez la console Firehose à l’adresse https://console.aws.amazon.com/firehose/.

  2. Choisissez Créer un flux Firehose.

  3. Pour Source, choisissez l’une des sources suivantes :

    • Amazon Kinesis Data Streams

    • Amazon MSK

    • PUT direct

  4. Pour Destination, choisissez Tables Apache Iceberg.

  5. Entrez un nom pour Nom du flux Firehose.

  6. Configurez vos Paramètres sources.

  7. Pour Paramètres de destination, choisissez Compte actuel pour diffuser sur les tables de votre compte ou Entre comptes pour les tables d’un autre compte.

    • Pour les tables du Compte actuel, sélectionnez votre catalogue de S3 Tables dans la liste déroulante Catalogue.

    • Pour les tables Entre comptes, saisissez l’ARN du catalogue vers lequel vous souhaitez diffuser des données sur un autre compte.

  8. Configurez les noms de base de données et de tables à l’aide d’une configuration de clé unique, d’expressions JSONQuery ou d’une fonction Lambda. Pour plus d’informations, reportez-vous à Routage des enregistrements entrants vers une table Iceberg unique et Routage des enregistrements entrants vers différentes tables Iceberg dans le Guide du développeur Amazon Data Firehose.

  9. Sous Paramètres de sauvegarde, spécifiez un compartiment de sauvegarde S3.

  10. Pour Rôles IAM existants, sous Paramètres avancés, sélectionnez le rôle IAM que vous avez créé pour Firehose.

  11. Choisissez Créer un flux Firehose.

Pour plus d’informations sur les autres paramètres que vous pouvez configurer pour un flux, consultez Configuration du flux Firehose dans le Guide du développeur Amazon Data Firehose.