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.
Diffusion de données vers des tables avec Amazon Data Firehose
Amazon Data Firehose est un service entièrement géré qui fournit des données de streaming
Procédez comme suit pour configurer le streaming Firehose vers des tables situées dans des compartiments de tables S3 :
-
Intégrez vos compartiments de tables avec les services d’analytique AWS.
-
Configurez Firehose pour fournir des données dans vos tables S3. Pour ce faire, vous créez un rôle de service AWS Identity and Access Management (IAM) qui permet à Firehose d'accéder à vos tables.
-
Accordez au rôle de service Firehose des autorisations explicites sur votre table ou son espace de noms. Pour plus d'informations, consultez la section Autorisations de Grant Lake Formation sur les ressources de votre table.
-
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 avec des autorisations spécifiques pour accéder aux AWS Glue tables et écrire des données dans les tables S3. Vous devez fournir ce rôle IAM lorsque vous créez un flux Firehose.
Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation de gauche, choisissez Politiques.
-
Choisissez Créer une politique, puis JSON dans l’éditeur de politique.
-
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
par vos propres informations.user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3TableAccessViaGlueFederation", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetDatabase", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:
region
:account-id
:catalog/s3tablescatalog/*", "arn:aws:glue:region
:account-id
:catalog/s3tablescatalog", "arn:aws:glue:region
:account-id
:catalog", "arn:aws:glue:region
:account-id
:database/*", "arn:aws:glue:region
:account-id
: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:region
:account-id
:stream/stream-name
" }, { "Sid": "RequiredWhenDoingMetadataReadsANDDataAndMetadataWriteViaLakeformation", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" }, { "Sid": "RequiredWhenUsingKMSEncryptionForS3ErrorBucketDelivery", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region
:account-id
:key/KMS-key-id
" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region
.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:region
:account-id
:log-group:log-group-name
:log-stream:log-stream-name
" ] }, { "Sid": "RequiredWhenAttachingLambdaToFirehose", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region
:account-id
:function:function-name
:function-version
" ] } ] }Cette politique contient des déclarations qui autorisent l'accès à Kinesis Data Streams, l'invocation 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 des erreurs de livraison de données à votre groupe de CloudWatch journaux et à vos flux. Pour cela, vous devez configurer les noms des flux de journaux et du groupe de journaux. Pour les noms des groupes de journaux et des flux de journaux, consultez Monitor Amazon Data Firehose Using CloudWatch Logs.
-
Une fois que vous avez créé cette politique, créez un rôle IAM avec Service AWS comme Type d’entité approuvée.
-
Pour Service ou cas d’utilisation, choisissez Kinesis. Pour Cas d’utilisation, choisissez Kinesis Firehose.
-
Choisissez Suivant, puis sélectionnez la politique que vous avez créée précédemment.
-
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.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "firehose.amazonaws.com" ] } } ] }
Création d'un flux Firehose vers des tables S3
La procédure suivante montre comment créer un flux Firehose pour fournir des données aux tables S3 à l'aide de la console. Les prérequis suivants sont nécessaires pour configurer un flux Firehose vers les tables S3.
Prérequis
-
Intégrez vos compartiments de tables avec les services d’analytique AWS.
Accordez à Lake Formation des autorisations sur le rôle de service Firehose que vous avez créé pour accéder aux tables.
Pour fournir des informations de routage à Firehose lorsque vous configurez un flux, vous utilisez votre espace de noms comme 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)
Ouvrez la console Firehose à l'adresse. https://console.aws.amazon.com/firehose/
-
Choisissez Créer un flux Firehose.
-
Pour Source, choisissez l’une des sources suivantes :
-
Amazon Kinesis Data Streams
-
Amazon MSK
-
Directement PUT
-
-
Pour Destination, choisissez Apache IcebergTables.
-
Entrez un nom pour Nom du flux Firehose.
-
Configurez vos Paramètres sources.
-
Pour les paramètres de destination, choisissez Compte courant pour diffuser sur les tables de votre compte ou Compte croisé pour les tables d'un autre compte.
Pour les tables du compte courant, sélectionnez votre catalogue de tables S3 dans la liste déroulante Catalogue.
Pour les tables d'un compte multicompte, entrez l'ARN du catalogue vers lequel vous souhaitez diffuser des données sur un autre compte.
-
Configurez les noms de base de données et de tables à l'aide d'une configuration de clé unique, d' JSONQuery expressions ou d'une fonction Lambda. Pour plus d'informations, reportez-vous aux sections Router les enregistrements entrants vers une seule table Iceberg et Router les enregistrements entrants vers différentes tables Iceberg du manuel Amazon Data Firehose Developer Guide.
-
Sous Paramètres de sauvegarde, spécifiez un compartiment de sauvegarde S3.
-
Pour Rôles IAM existants, sous Paramètres avancés, sélectionnez le rôle IAM que vous avez créé pour Firehose.
Choisissez Créer un flux Firehose.
Pour plus d'informations sur les autres paramètres que vous pouvez configurer pour un flux, consultez Configurer le flux Firehose dans le manuel Amazon Data Firehose Developer Guide.