Fazer streaming de dados para tabelas com o Amazon Data Firehose
O Amazon Data Firehose é um serviço totalmente gerenciado para entrega de dados de streaming
Esse é o método de acesso para trabalhar com o serviço Tabelas do S3.
-
Integre os buckets de tabela aos serviços de analytics da AWS.
-
Configure o Firehose para entregar dados nas tabelas do S3. Para fazer isso, crie um perfil de serviço do AWS Identity and Access Management (IAM) que permita que o Firehose acesse suas tabelas.
-
Conceda ao perfil de serviço do Firehose permissões explícitas referentes á tabela ou ao namespace da tabela. Para ter mais informações, consulte Conceder permissões do Lake Formation nos recursos de tabela.
-
Crie um fluxo do Firehose que encaminhe os dados para a tabela.
Criar um perfil para o Firehose usar tabelas do S3 como destino
O Firehose precisa de um perfil de serviço do IAM com permissões específicas para acessar tabelas do AWS Glue e gravar dados nas tabelas do S3. É necessário fornecer esse perfil do IAM ao criar um fluxo do Firehose.
Abra o console do IAM, em https://console.aws.amazon.com/iam/
. -
No painel de navegação à esquerda, escolha Políticas.
-
Escolha Criar uma política e selecione JSON no editor de políticas.
-
Adicione a seguinte política em linha que concede permissões a todos os bancos de dados e tabelas no catálogo de dados. Se você quiser, poderá conceder permissões somente para tabelas e bancos de dados específicos. Para usar essa política, substitua os
por suas próprias informações.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
" ] } ] }A política tem uma instrução que permite acesso ao Kinesis Data Streams, invocando funções do Lambda e acesso a chaves do AWS KMS. Se você não usar nenhum desses recursos, poderá remover as respectivas declarações.
Se o registro de erros em log estiver habilitado, o Firehose também enviará erros de entrega de dados para seu grupo de logs e fluxos do CloudWatch. Para isso, é necessário configurar os nomes do grupo de logs e do fluxo de logs. Para os nomes do grupo de logs e do fluxo de logs, consulte Monitor Amazon Data Firehose Using CloudWatch Logs.
-
Depois de criar a política, crie um perfil do IAM com a opção Serviço da AWS como Tipo de entidade confiável.
-
Em Serviço ou Caso de Uso, escolha Kinesis. Em Caso de uso, escolha Kinesis Firehose.
-
Selecione Próximo e escolha a política que você criou anteriormente.
-
Dê um nome à sua função. Revise os detalhes do perfil e escolha Criar perfil. O perfil terá a política de confiança a seguir.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "firehose.amazonaws.com" ] } } ] }
Configurar um fluxo do Firehose para tabelas do S3
O procedimento a seguir mostra como criar um fluxo do Firehose para entregar dados às tabelas do S3 usando o console. Os pré-requisitos a seguir são necessários para configurar um fluxo do Firehose para tabelas do S3.
Pré-requisitos
-
Integre os buckets de tabela aos serviços de analytics da AWS.
Conceda permissões do Lake Formation ao perfil de serviço do Firehose que você criou para acessar tabelas.
Para fornecer informações de roteamento ao Firehose ao configurar um fluxo, use namespace como o nome do banco de dados e o nome de uma tabela nesse namespace. Você pode usar esses valores na seção “Chave exclusiva” de uma configuração de fluxo do Firehose a fim de rotear dados para uma única tabela. Você também pode usar esses valores a fim de rotear para uma tabela usando expressões de consulta JSON. Para ter mais informações, consulte Route incoming records to a single Iceberg table.
Como configurar um fluxo do Firehose para tabelas do S3 (console)
Abra o console do Firehose em https://console.aws.amazon.com/firehose/
. -
Escolha Criar fluxo do Firehose.
-
Em Origem, escolha uma das seguinte opções:
-
Amazon Kinesis Data Streams
-
Amazon MSK
-
PUT direto
-
-
Em Destino, selecione Tabelas do Apache Iceberg.
-
Insira um Nome do fluxo do Firehose.
-
Defina as Configurações da origem.
-
Em Configurações de destino, escolha Conta atual para transmitir para tabelas em sua conta ou Entre contas para tabelas em outra conta.
Para tabelas na Conta atual, selecione o Catálogo de Tabelas do S3 no menu suspenso Catálogo.
Para tabelas Entre contas, insira o ARN do catálogo para o qual você deseja transmitir em outra conta.
-
Configure os nomes do banco de dados e da tabela usando a Configuração de chave exclusiva, expressões JSONQuery ou em uma função do Lambda. Consulte mais informações em Route incoming records to a single Iceberg table e Route incoming records to different Iceberg tables no Guia do desenvolvedor do Amazon Data Firehose.
-
Em Configurações de backup, especifique um Bucket de backup do S3.
-
Em Funções do IAM existentes na seção Configurações avançadas, selecione o perfil do IAM que você criou para o Firehose.
Escolha Criar fluxo do Firehose.
Consulte mais informações sobre as outras configurações que você pode definir para um fluxo em Set up the Firehose stream no Guia do desenvolvedor do Amazon Data Firehose.