Um tópico de importação do Amazon Kinesis Data Streams permite ingerir dados continuamente do Amazon Kinesis Data Streams como uma fonte externa e no Pub/Sub. Em seguida, você pode transmitir os dados para qualquer um dos destinos compatíveis com o Pub/Sub.
Este documento mostra como criar e gerenciar tópicos de importação do Amazon Kinesis Data Streams. Para criar um tópico padrão, consulte Criar um tópico padrão.
Antes de começar
Saiba mais sobre o processo de publicação do Pub/Sub.
Configure as funções e permissões necessárias para gerenciar os tópicos de importação do Amazon Kinesis Data Streams, incluindo:
Configure a federação de identidade da carga de trabalho para que o Google Cloud possa acessar o serviço de streaming externo.
Papéis e permissões necessários para gerenciar tópicos de importação
Para conseguir as permissões necessárias para criar e gerenciar tópicos de importação do Amazon Kinesis Data Streams,
peça ao administrador para conceder a você o
papel do IAM de Editor do Pub/Sub(roles/pubsub.editor
)
no seu tópico ou projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar e gerenciar tópicos de importação do Amazon Kinesis Data Streams. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar e gerenciar tópicos de importação do Amazon Kinesis Data Streams:
-
Crie um tópico de importação:
pubsub.topics.create
-
Exclua um tema de importação:
pubsub.topics.delete
-
Receba um tema de importação:
pubsub.topics.get
-
Listar um tema de importação:
pubsub.topics.list
-
Publicar em um tópico de importação:
pubsub.topics.publish
-
Atualizar um tema de importação:
pubsub.topics.update
-
Acesse a política do IAM para um tópico de importação:
pubsub.topics.getIamPolicy
-
Configure a política do IAM para um tópico de importação:
pubsub.topics.setIamPolicy
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
É possível configurar o controle de acesso no nível do projeto e do recurso individual.
Configurar a identidade federada para acessar o Kinesis Data Streams
A federação de identidade da carga de trabalho permite que os serviços do Google Cloud acessem cargas de trabalho executadas fora do Google Cloud. Com a federação de identidade, não é necessário manter ou transmitir credenciais para o Google Cloud para acessar seus recursos em outras nuvens. Em vez disso, use as identidades das cargas de trabalho para fazer a autenticação no Google Cloud e acessar recursos.
Criar uma conta de serviço no Google Cloud
Essa é uma etapa opcional. Se você já tiver uma conta de serviço, poderá usá-la neste procedimento em vez de criar uma nova. Se você estiver usando uma conta de serviço atual, acesse Gravar o ID exclusivo da conta de serviço para a próxima etapa.
Para um tópico de importação do Amazon Kinesis Data Streams, o Pub/Sub usa a conta de serviço como a identidade para acessar recursos da AWS.
Para mais informações sobre como criar uma conta de serviço, incluindo pré-requisitos, papéis e permissões obrigatórios e diretrizes de nomenclatura, consulte Criar contas de serviço. Depois de criar uma conta de serviço, talvez seja necessário aguardar 60 segundos ou mais para usá-la. Esse comportamento ocorre porque as operações de leitura têm consistência eventual e pode levar algum tempo para a nova conta de serviço ficar visível.
Gravar o ID exclusivo da conta de serviço
Você precisa de um ID exclusivo da conta de serviço para configurar uma função no console da AWS.
No console do Google Cloud, acesse a página de detalhes da Conta de serviço.
Clique na conta de serviço que você acabou de criar ou que planeja usar.
Na página Detalhes da conta de serviço, registre o número do ID exclusivo.
Você vai precisar do ID como parte da seção Criar uma função na AWS usando uma política de confiança personalizada.
Adicionar o papel de criador do token da conta de serviço à conta de serviço do Pub/Sub
O papel Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator
)
permite que os participantes criem credenciais de curta duração
para uma conta de serviço. Esses tokens ou credenciais são usados para falsificar
a conta de serviço.
Para mais informações sobre representação da conta de serviço, consulte Representação da conta de serviço.
Também é possível adicionar o papel de editor do Pub/Sub (roles/pubsub.publisher
)
durante esse procedimento. Para mais informações sobre o papel e por que ele está sendo adicionado,
consulte Adicionar o papel de editor do Pub/Sub à conta de serviço do Pub/Sub.
No console do Google Cloud, abra a página IAM.
Ative a opção Incluir concessões de papel fornecidas pelo Google.
Procure a conta de serviço com o formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Para essa conta de serviço, clique no botão Editar principal.
Se necessário, clique em Adicionar outro papel.
Pesquise e selecione o papel Criador de token da conta de serviço (
roles/iam.serviceAccountTokenCreator
).Clique em Salvar.
Criar uma política na AWS
Você precisa de uma política na AWS para permitir que o Pub/Sub se autentique com a AWS para que ele possa ingerir dados de um fluxo de dados do AWS Kinesis. Antes de criar uma política da AWS, crie um fluxo de dados do Kinesis e um consumidor registrado nele. Recomendamos essa prática para que você possa restringir as permissões ao stream específico.
Para mais informações sobre como criar um fluxo de dados do AWS Kinesis, consulte Fluxo de dados do Kinesis.
Para mais informações sobre a API de fluxo de dados do AWS Kinesis usada para registrar consumidores, consulte RegisterStreamConsumer.
Para mais métodos e informações sobre como criar uma política na AWS, consulte Como criar políticas do IAM.
Para criar uma política na AWS, siga estas etapas:
Faça login no console de gerenciamento da AWS e abra o console do IAM.
No painel de navegação do console do IAM, clique em Gerenciamento de acesso > Políticas.
Clique em Criar política.
Em Selecionar um serviço, selecione Kinesis.
Em Ação permitida, selecione:
List > ListShards.
Essa ação concede permissão para listar os fragmentos em um fluxo e fornece informações sobre cada fragmento.
Ler > SubscribeToShard.
Essa ação concede permissão para ouvir um fragmento específico com fan-out aprimorado.
Ler > DescribeStreamConsumer.
Essa ação concede permissão para receber a descrição de um consumidor de stream registrado.
Essas permissões abrangem a leitura do fluxo. O Pub/Sub só oferece suporte à leitura de um stream do Kinesis com Fan-out aprimorado usando a API SubscribeToShard de streaming.
Em Recursos, se você quiser restringir a política a um stream ou consumidor específico (recomendado), especifique o ARN do consumidor e o ARN do stream.
Clique em Adicionar mais permissões.
Em Selecionar um serviço, insira e selecione STS.
Em ação permitida, selecione Gravar > AssumeRoleWithWebIdentity.
Essa ação concede permissão para receber um conjunto de credenciais de segurança temporárias para que o Pub/Sub se autentique no fluxo de dados do Kinesis usando a federação de identidade.
Clique em Próxima.
Digite um nome e uma descrição para a política.
Clique em Criar política.
Criar uma função na AWS usando uma política de confiança personalizada
É necessário criar uma função na AWS para que o Pub/Sub possa se autenticar na AWS para ingerir dados do Kinesis Data Streams.
Para criar uma função usando uma política de confiança personalizada, siga estas etapas:
Faça login no console de gerenciamento da AWS e abra o console do IAM.
No painel de navegação do console do IAM, clique em Papéis.
Clique em Criar papel.
Em Selecionar entidade confiável, selecione Política de confiança personalizada.
Na seção Política de confiança personalizada, insira ou cole o seguinte:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "<SERVICE_ACCOUNT_UNIQUE_ID>" } } } ] }
Substitua
<SERVICE_ACCOUNT_UNIQUE_ID>
pelo ID exclusivo da conta de serviço que você registrou em Gravar o ID exclusivo da conta de serviço.Clique em Próxima.
Em Adicionar permissões, pesquise e selecione a política personalizada que você acabou de criar.
Clique em Próxima.
Digite um nome e uma descrição para a função.
Clique em Criar papel.
Adicionar a função de editor do Pub/Sub à conta de serviço do Pub/Sub
É necessário atribuir um papel de editor à conta de serviço do Pub/Sub para que ele possa publicar no tópico de importação do AWS Kinesis Data Streams.
Para ativar a publicação de todos os tópicos em um projeto, consulte Ativar a publicação de todos os tópicos. Use esse método se você não tiver criado tópicos de importação do AWS Kinesis Data Streams.
Para ativar a publicação de um tópico específico (recomendado), consulte Ativar a publicação de um único tópico. Use esse método somente se o tópico de importação do AWS Kinesis Data Streams já existir.
Ativar a publicação em todos os tópicos
Use esse método se você não tiver criado tópicos de importação do AWS Kinesis Data Streams.
No console do Google Cloud, abra a página IAM.
Ative a opção Incluir concessões de papel fornecidas pelo Google.
Procure a conta de serviço com o formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Para essa conta de serviço, clique no botão Editar principal.
Se necessário, clique em Adicionar outro papel.
Pesquise e selecione a função de editor do Pub/Sub (
roles/pubsub.publisher
).Clique em Salvar.
Ativar a publicação em um único tópico
Use esse método somente se o tópico de importação do AWS Kinesis Data Streams já existir.
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Execute o comando
gcloud pubsub topics add-iam-policy-binding
:gcloud pubsub topics add-iam-policy-binding TOPIC_ID\ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com"\ --role="roles/pubsub.publisher"
Substitua:
TOPIC_ID é o ID do tópico de importação do Amazon Kinesis Data Streams.
PROJECT_NUMBER é o número do projeto. Para conferir o número do projeto, consulte Como identificar projetos.
Adicionar a função do usuário da conta de serviço à conta de serviço
O papel de usuário da conta de serviço (roles/iam.serviceAccountUser
) inclui
a permissão iam.serviceAccounts.actAs
, que permite que um principal anexe uma
conta de serviço às configurações de transferência do tópico de importação do Amazon Kinesis Data Streams
e use essa conta de serviço para identidade federada.
Siga as etapas abaixo:
No console do Google Cloud, abra a página IAM.
Para o principal que está emitindo as chamadas de criação ou atualização de tópicos, clique no botão Editar principal.
Se necessário, clique em Adicionar outro papel.
Pesquise e selecione a Função de usuário da conta de serviço (
roles/iam.serviceAccountUser
).Clique em Salvar.
Criar um tópico de importação do Amazon Kinesis Data Streams
Para saber mais sobre as propriedades associadas a um tópico, consulte Propriedades de um tópico.
Verifique se você concluiu os seguintes procedimentos:
Configurar a identidade federada para acessar o Kinesis Data Streams
Adicionar o papel de editor do Pub/Sub à conta de serviço do Pub/Sub
Adicionar o função do usuário da conta de serviço à conta de serviço
Criar o tópico e a assinatura separadamente, mesmo que em rápida sucessão, pode levar à perda de dados. Há um curto período em que o tópico existe sem uma assinatura. Se algum dado for enviado para o tópico durante esse período, ele será perdido. Ao criar o tópico primeiro, criar a assinatura e, em seguida, converter o tópico em um tópico de importação, você garante que nenhuma mensagem seja perdida durante o processo de importação.
Para criar um tópico de importação do Amazon Kinesis Data Streams, siga estas etapas:
Console
-
No console do Google Cloud, acesse a página Tópicos.
-
Selecione Criar tópico.
-
No campo ID do tópico, insira um ID para o tópico de importação do Amazon Kinesis Data Streams.
Para mais informações sobre como nomear tópicos, consulte as diretrizes de nomenclatura.
-
Selecione Adicionar uma assinatura padrão.
-
Selecione Ativar ingestão.
-
Em "Origem de transferência", selecione Amazon Kinesis Data Streams.
-
Digite os seguintes detalhes:
-
ARN do Kinesis Stream: o ARN do Kinesis Data Stream que você planeja ingerir no Pub/Sub. O formato ARN é o seguinte:
arn:${Partition}:kinesis:${Region}:${Account}:stream/${StreamName}
. -
ARN do consumidor do Kinesis: o ARN do recurso do consumidor registrado no fluxo de dados do AWS Kinesis. O formato do ARN é o seguinte:
arn:${Partition}:kinesis:${Region}:${Account}:${StreamType}/${StreamName}/consumer/${ConsumerName}:${ConsumerCreationTimpstamp}
. -
ARN do papel da AWS: o ARN do papel da AWS. O formato ARN do papel é o seguinte:
arn:aws:iam:${Account}:role/${RoleName}
. -
Conta de serviço: a conta de serviço que você criou em Criar uma conta de serviço no Google Cloud.
-
-
Selecione Criar tópico.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Execute o comando
gcloud pubsub topics create
:gcloud pubsub topics create TOPIC_ID \ --kinesis-ingestion-stream-arn KINESIS_STREAM_ARN\ --kinesis-ingestion-consumer-arn KINESIS_CONSUMER_ARN\ --kinesis-ingestion-role-arn KINESIS_ROLE_ARN\ --kinesis-ingestion-service-account PUBSUB_SERVICE_ACCOUNT
Substitua:
-
TOPIC_ID é o ID do tópico.
-
KINESIS_STREAM_ARN é o ARN dos fluxos de dados do Kinesis que você planeja ingerir no Pub/Sub. O formato do ARN é o seguinte:
arn:${Partition}:kinesis:${Region}:${Account}:stream/${StreamName}
. -
KINESIS_CONSUMER_ARN é o ARN do recurso de consumidor registrado no AWS Kinesis Data Streams. O formato ARN é o seguinte:
arn:${Partition}:kinesis:${Region}:${Account}:${StreamType}/${StreamName}/consumer/${ConsumerName}:${ConsumerCreationTimpstamp}
. -
KINESIS_ROLE_ARN é o ARN do papel da AWS. O formato ARN da função é o seguinte:
arn:aws:iam:${Account}:role/${RoleName}
. -
PUBSUB_SERVICE_ACCOUNT é a conta de serviço que você criou em Criar uma conta de serviço no Google Cloud.
-
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
C++
Antes de testar esta amostra, siga as instruções de configuração do C++ no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C++.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js (TypeScript)
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Para mais informações sobre ARNs, consulte Nomes de recursos da Amazon (ARNs) e Identificadores do IAM.
Se você tiver problemas, consulte Resolver problemas em um tópico de importação do Amazon Kinesis Data Streams.
Editar um tópico de importação do Amazon Kinesis Data Streams
Você pode editar as configurações da fonte de dados de ingestão de um tópico de importação do Amazon Kinesis Data Streams. Siga as etapas abaixo:
Console
-
No console do Google Cloud, acesse a página Tópicos.
-
Clique no tópico de importação do Amazon Kinesis Data Streams.
-
Na página de detalhes do tópico, clique em Editar.
-
Atualize os campos que você quer mudar.
-
Clique em Atualizar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para evitar a perda das configurações do tópico de importação, inclua todas elas sempre que atualizar o tópico. Se você deixar algo de fora, o Pub/Sub vai redefinir a configuração para o valor padrão original.
Execute o comando
gcloud pubsub topics update
com todas as flags mencionadas no exemplo abaixo:gcloud pubsub topics update TOPIC_ID \ --kinesis-ingestion-stream-arn KINESIS_STREAM_ARN\ --kinesis-ingestion-consumer-arn KINESIS_CONSUMER_ARN\ --kinesis-ingestion-role-arn KINESIS_ROLE_ARN\ --kinesis-ingestion-service-account PUBSUB_SERVICE_ACCOUNT
Substitua:
-
TOPIC_ID é o ID do tópico. Não é possível atualizar este campo.
-
KINESIS_STREAM_ARN é o ARN dos fluxos de dados do Kinesis que você planeja ingerir no Pub/Sub. O formato do ARN é o seguinte:
arn:${Partition}:kinesis:${Region}:${Account}:stream/${StreamName}
. -
KINESIS_CONSUMER_ARN é o ARN do recurso de consumidor registrado no AWS Kinesis Data Streams. O formato do ARN é o seguinte:
arn:${Partition}:kinesis:${Region}:${Account}:${StreamType}/${StreamName}/consumer/${ConsumerName}:${ConsumerCreationTimpstamp}
. -
KINESIS_ROLE_ARN é o ARN do papel da AWS. O formato ARN da função é o seguinte:
arn:aws:iam:${Account}:role/${RoleName}
. -
PUBSUB_SERVICE_ACCOUNT é a conta de serviço que você criou em Criar uma conta de serviço no Google Cloud.
-
Cotas e limites para tópicos de importação do Amazon Kinesis Data Streams
O throughput do editor para tópicos de importação é limitado pela cota de publicação do tópico. Para mais informações, consulte Cotas e limites do Pub/Sub.
A seguir
Escolha o tipo de assinatura para seu tópico.
Saiba como publicar uma mensagem em um tópico.
Crie ou modifique um tópico com a CLI gcloud, APIs REST ou Bibliotecas de cliente.
Resolver problemas com um tópico de importação do Amazon Kinesis Data Streams.