Transmisión de datos a tablas con Amazon Data Firehose
Amazon Data Firehose es un servicio completamente administrado para entregar datos de streaming
Siga estos pasos para configurar el streaming de Firehose a tablas en buckets de tablas de S3:
-
Integre los buckets de tablas con los servicios de análisis de AWS.
-
Configure Firehose para la entrega de datos a las tablas de S3. Para ello, cree un rol de servicio de AWS Identity and Access Management (IAM) que permita a Firehose acceder a las tablas.
-
Conceda al rol de servicio Firehose permisos explícitos a la tabla o al espacio de nombres de la tabla. Para obtener más información, consulte Concesión de permisos de Lake Formation a los recursos de tabla.
Creación de un rol para que Firehose utilice las tablas de S3 como destino
Firehose necesita un rol de servicio de IAM con permisos específicos para acceder a tablas de AWS Glue y escribir datos en tablas de S3. Necesita proporcionar este rol de IAM al crear un flujo de Firehose.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación izquierdo, elija Políticas
-
Elija Crear una política y seleccione JSON en el editor de políticas.
-
Agregue la siguiente política en línea que otorga permisos a todas las bases de datos y tablas del catálogo de datos. Si lo desea, puede conceder permisos solo a tablas y bases de datos específicas. Para utilizar esta política, sustituya
por su información.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
" ] } ] }Esta política tiene instrucciones que permiten el acceso a Kinesis Data Streams, la invocación de funciones de Lambda y el acceso a las claves de AWS KMS. Si no utiliza ninguno de estos recursos, puede eliminar las declaraciones correspondientes.
Si el registro de errores está habilitado, Firehose también envía los errores de entrega de datos a los flujos y al grupo de registro de CloudWatch. Para esto, debe configurar los nombres de los grupos de registro y los flujos de registro. Para conocer los nombres de grupos de registro y de flujos de registro, consulte Supervisión de Amazon Data Firehose mediante Registros de CloudWatch.
-
Después de crear la política, cree un rol de IAM con Servicio de AWS como Tipo de entidad de confianza.
-
En Servicio o caso de uso, elija Kinesis. Elija Kinesis Firehose como su caso de uso.
-
Elija Siguiente y, a continuación, seleccione la política que creó anteriormente.
-
Dé un nombre a su rol. Revise los detalles del rol y seleccione Crear rol. El rol tendrá la siguiente política de confianza.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "firehose.amazonaws.com" ] } } ] }
Creación de un flujo de Firehose para tablas de S3
El siguiente procedimiento muestra cómo crear un flujo de Firehose para entregar datos a tablas de S3 mediante la consola. Se necesitan los siguientes requisitos previos para configurar un flujo de Firehose para tablas de S3.
Requisitos previos
-
Integre los buckets de tablas con los servicios de análisis de AWS.
Conceda permisos de Lake Formation al rol de servicio de Firehose que creó para acceder a las tablas.
Para proporcionar información de enrutamiento a Firehose cuando configura una transmisión, utilice el nombre del enlace de recursos como nombre de la base de datos y el nombre de una tabla en ese espacio de nombres. Puede utilizar estos valores en la sección Clave única de una configuración de flujo de Firehose para enrutar datos a una sola tabla. También puede utilizar estos valores para enrutar a una tabla mediante expresiones de consulta JSON. Para obtener más información, consulte Enrutar los registros entrantes a una única tabla de Iceberg.
Configuración de un flujo de Firehose para tablas de S3 (consola)
Abra la consola de Firehose en https://console.aws.amazon.com/firehose/
. -
Seleccione Crear flujo de Firehose.
-
En Origen, elija uno de los siguientes orígenes:
-
Amazon Kinesis Data Streams
-
Amazon MSK
-
PUT directa
-
-
En Destino, elija Tablas de Apache Iceberg.
-
Introduzca un nombre de flujo de Firehose.
-
Establezca la Configuración de origen.
-
En Configuración del destino, elija Cuenta actual para el flujo a las tablas de la cuenta o Múltiples cuentas para las tablas de otra cuenta.
Para las tablas de la Cuenta actual, seleccione el catálogo de Tablas de S3 en la lista desplegable Catálogo.
Para las tablas de Múltiples cuentas, introduzca el ARN del catálogo al que desea hacer streaming en otra cuenta.
-
Configure los nombres de base de datos y de tabla mediante Configuración de clave única, expresiones JSONQuery o una función de Lambda. Para obtener más información, consulte Enrutamiento de los registros entrantes a una sola tabla de Iceberg y Enrutamiento de los registros entrantes a diferentes tablas de Iceberg en la Guía para desarrolladores de Amazon Data Firehose.
-
En Configuración de copia de seguridad, especifique un Bucket de copia de seguridad de S3.
-
En Roles de IAM existentes, en Configuración avanzada, seleccione el rol de IAM que creó para Firehose.
Seleccione Crear flujo de Firehose.
Para obtener más información sobre las otras opciones que puede configurar para un flujo, consulte Configuración del flujo de Firehose en la Guía para desarrolladores de Amazon Data Firehose.