O Amazon Data Firehose é um serviço totalmente gerenciado para entrega de dados de streaming
Depois de integrar os buckets de tabela aos serviços de analytics da AWS, faça o seguinte:
-
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 as tabelas.
-
Crie um link de recurso para a tabela ou o namespace da tabela.
-
Para conceder permissões explícitas ao perfil de serviço do Firehose referentes à tabela ou ao namespace da tabela, conceda permissões no link de recurso.
-
Crie um fluxo do Firehose que encaminha 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 utilizar 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" ] } } ] }
Criar um link de recurso para os namespaces da tabela
Para acessar as tabelas, o Amazon Data Firehose precisa de um link de recurso direcionado ao namespace da tabela. Um link de recurso é um objeto do Catálogo de Dados que atua como um alias ou um ponteiro para outro recurso do Catálogo de Dados, como um banco de dados ou uma tabela. O link é armazenado no Catálogo de Dados da conta ou região em que foi criado. Consulte mais informações em How resource links work no Guia do desenvolvedor do AWS Lake Formation.
Depois de integrar os buckets de tabela aos serviços de analytics da AWS, você pode criar links de recurso para trabalhar com as tabelas no Firehose.
Crie links de recurso referentes aos namespaces de tabela, depois forneça o nome do link para o Firehose a fim de permitir que ele trabalhe com as tabelas vinculadas.
O comando AWS CLI a seguir cria um link de recurso que você pode usar para conectar tabelas do S3 ao Firehose. Para usar esse exemplo de comando, substitua os
por suas próprias informações.user input
placeholders
aws glue create-database --region
us-east-1
\ --catalog-id "111122223333
" \ --database-input \ '{ "Name": "resource-link-name
", "TargetDatabase": { "CatalogId": "111122223333
:s3tablescatalog/amzn-s3-demo-table-bucket
", "DatabaseName": "my_namespace
" }, "CreateTableDefaultPermissions": [] }'
nota
Você deve conceder permissões separadamente para o link do recurso e o namespace de destino (vinculado). Para ter mais informações, consulte Conceder permissão em um link de recurso.
Conceder permissão em um link de recurso
Ao usar um link de recurso para acessar as tabelas, você deve conceder permissões separadamente para o link do recurso e para a tabela ou o namespace de destino (vinculado). É possível conceder a uma entidade principal do IAM permissões do Lake Formation em um link de recurso vinculado ao namespace de tabela, seja por meio do console do Lake Formation ou da AWS CLI.
-
Abra o console do AWS Lake Formation em https://console.aws.amazon.com/lakeformation/
e faça login como administrador do data lake. Consulte mais informações sobre como criar um administrador de data lake em Create a data lake administrator no Guia do desenvolvedor do AWS Lake Formation. No painel de navegação, escolha Permissões de dados e Conceder.
Na página Conceder permissões, em Entidades principais, escolha Usuários e perfis do IAM e selecione o perfil de serviço que você criou para fazer streaming para tabelas.
-
Em Tags do LF ou recursos de catálogo, escolha Recursos do catálogo de dados nomeados.
Em Catálogos, escolha o ID da conta, que é o Catálogo padrão.
-
Em Bancos de dados, escolha o link de recurso que você criou para o namespace de tabela.
-
Em Permissões de links de recursos, selecione Descrever.
-
Selecione Conceder.
Configurar um fluxo do Firehose para tabelas do S3
O procedimento a seguir mostra como configurar 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.
-
Criar um link de recurso para o namespace para que seja o destino do fluxo.
nota
Quando você cria um link de recurso para o Firehose, o nome pode consistir somente em letras maiúsculas, minúsculas e sublinhados (_).
Conceder permissões do Lake Formation nos recursos de tabela ao perfil de serviço do Firehose que você criou para fazer streaming para as tabelas.
nota
Você deve conceder permissões separadamente para o link do recurso e na tabela ou no namespace de destino (vinculado). O Firehose precisa da permissão Descrever no link de recurso.
Para fornecer informações de roteamento ao Firehose ao configurar um fluxo, use o nome do link de recurso criado para o 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 do destino, selecione Conta atual e a Região da AWS das tabelas para as quais você deseja fazer streaming.
-
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.