Publicar e receber eventos criando um barramento e um registro (Terraform)
Neste guia de início rápido, mostramos como usar o Terraform para criar um barramento do Eventarc Advanced e fazer a inscrição no seu projeto Google Cloud para publicar e receber mensagens de eventos.
Um barramento atua como um roteador central, recebendo mensagens de fontes de eventos ou publicadas por provedores.
Um registro encaminha as mensagens recebidas pelo barramento para um ou mais destinos por um pipeline de processamento.
Neste guia de início rápido, você fará as seguintes tarefas:
Implantar um serviço de receptor de eventos no Cloud Run
Crie um barramento do Eventarc Advanced.
Ative os eventos de fontes do Google.
Crie um pipeline e um registro do Eventarc Advanced.
Publique uma mensagem de evento no barramento criando um fluxo de trabalho.
Confira os dados de eventos nos registros do Cloud Run.
Você pode concluir a maioria das etapas deste guia de início rápido usando o Terraform. Para concluir todas as etapas usando a Google Cloud CLI, consulte Publicar eventos de uma origem do Google.
Para mais informações sobre como usar o Terraform, consulte a documentação Terraform no Google Cloud.
Antes de começar
As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito de Google Cloud .
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
No console do Google Cloud , ative o Cloud Shell.
Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
O Terraform está integrado ao ambiente do Cloud Shell, e você pode usar o Cloud Shell para implantar seus recursos do Terraform sem precisar instalar o Terraform.
Funções exigidas
Para conseguir as permissões necessárias a fim de concluir o guia de início rápido, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
- Administrador do Cloud Run (
roles/run.admin) - Desenvolvedor do Eventarc (
roles/eventarc.developer) - Administrador de barramento de mensagem do Eventarc (
roles/eventarc.messageBusAdmin) - Acessador de exibição de registros (
roles/logging.viewAccessor) - Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin) - Administrador da conta de serviço (
roles/iam.serviceAccountAdmin) - Usuário da conta de serviço (
roles/iam.serviceAccountUser) - Editor do Workflows (
roles/workflows.editor)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Preparar a implantação do Terraform
Antes de implantar qualquer recurso do Terraform, crie um arquivo de configuração do Terraform. Um arquivo de configuração do Terraform permite definir o estado final preferido da infraestrutura usando a sintaxe do Terraform.
No Cloud Shell, defina o projeto Google Cloud padrão em que você quer aplicar a configuração do Terraform. Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Substitua
PROJECT_IDpelo ID do seu projeto do Google Cloud .As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz. No Cloud Shell, crie um diretório e um novo arquivo dentro dele:
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Substitua
DIRECTORYpelo nome do diretório do Terraform.O nome do arquivo precisa ter a extensão
.tf. Por exemplo, neste início rápido, o arquivo de configuração émain.tf.
Definir sua configuração do Terraform
Copie os snippets de código do Terraform a seguir no arquivo main.tf. Ou, para copiar
todo o exemplo de código do GitHub, no canto superior direito de um snippet de código,
clique em
>
Ver no GitHub.
Ativar APIs
Use o recurso do Terraform google_project_service para ativar as APIs necessárias para aplicar a configuração do Terraform:
Criar uma conta de serviço
Para fins de teste, crie uma conta de serviço dedicada e conceda a ela papéis específicos do IAM.
Use os recursos do Terraform
google_service_account
e google_project_iam_member
para criar a conta de serviço e conceder a ela as funções
necessárias para publicar e receber eventos:
Criar um destino de evento
Use o recurso do Terraform
google_cloud_run_v2_service
para criar um
serviço do Cloud Run
como um destino de evento que registra o conteúdo de um evento:
Criar um barramento do Eventarc Advanced
Um barramento recebe mensagens de eventos de uma origem de mensagens ou publicadas por um provedor e atua como um roteador de mensagens. Para mais informações, consulte Criar um barramento para rotear mensagens.
Use o recurso do Terraform
google_eventarc_message_bus
para criar um barramento do Eventarc Advanced:
Ativar eventos de fontes do Google
Para publicar eventos de fontes do Google, crie um recurso GoogleApiSource que represente uma assinatura de eventos da API do Google para um barramento específico do Eventarc Advanced. Para mais informações, consulte
Publicar eventos de fontes do Google.
Use o recurso do Terraform
google_eventarc_google_api_source
para ativar eventos de fontes do Google:
Todos os tipos de eventos do Google compatíveis enviados diretamente de uma fonte do Google agora são coletados e publicados no seu barramento.
Criar um pipeline do Eventarc Advanced
Um pipeline permite configurar um destino e também oferece a opção de transformar os eventos correspondentes antes da entrega.
Use o recurso do Terraform
google_eventarc_pipeline
para criar um pipeline:
O destino do evento é o URL totalmente qualificado do seu serviço do Cloud Run, por exemplo, https://SERVICE_NAME-abcdef-uc.a.run.app. O endereço de e-mail da conta de serviço é usado para gerar um token do OIDC.
Criar uma inscrição no Eventarc Advanced
Um registro determina quais mensagens são roteadas para um destino e também especifica o pipeline usado para configurar um destino para as mensagens de evento. Para mais informações, consulte Criar uma inscrição para receber eventos.
Use o recurso do Terraform
google_eventarc_enrollment
para criar uma inscrição:
A expressão de correspondência para a inscrição usa a Common Expression Language (CEL) para publicar mensagens de eventos sempre que um fluxo de trabalho é criado. Em uma etapa posterior, você vai criar um fluxo de trabalho.
Aplique a configuração do Terraform:
Use a CLI do Terraform para provisionar a infraestrutura com base no arquivo de configuração. Para mais informações, consulte Comandos básicos do Terraform.
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade:terraform init -upgrade
Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
terraform plan
Corrija a configuração conforme necessário.
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
Normalmente, você aplica toda a configuração de uma só vez. No entanto, também é possível segmentar um recurso específico. Exemplo:
terraform apply -target="google_eventarc_message_bus.default"
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
Publicar uma mensagem de evento no barramento criando um fluxo de trabalho
O Workflows é uma plataforma de orquestração totalmente gerenciada que executa serviços na ordem definida por você: um fluxo de trabalho. Crie um fluxo de trabalho para gerar um tipo de evento compatível de uma origem do Google.
No diretório inicial, crie um novo arquivo chamado
myWorkflow.yaml.Copie e cole o seguinte fluxo de trabalho no novo arquivo e salve:
main: params: [input] steps: - checkSearchTermInInput: switch: - condition: '${"searchTerm" in input}' assign: - searchTerm: '${input.searchTerm}' next: readWikipedia - getLocation: call: sys.get_env args: name: GOOGLE_CLOUD_LOCATION result: location - setFromCallResult: assign: - searchTerm: '${text.split(location, "-")[0]}' - readWikipedia: call: http.get args: url: 'https://en.wikipedia.org/w/api.php' query: action: opensearch search: '${searchTerm}' result: wikiResult - returnOutput: return: '${wikiResult.body[1]}'Esse fluxo de trabalho transmite a região em que ele é implantado para a API Wikipédia e retorna uma lista de artigos relacionados da Wikipédia.
Implante o fluxo de trabalho usando o comando
gcloud workflows deploy:gcloud workflows deploy example-workflow --source=myWorkflow.yaml \ --service-account=eventarc-advanced-sa@PROJECT_ID.iam.gserviceaccount.com \ --location=us-central1
Ver os dados de eventos nos registros do Cloud Run
Depois de publicar um evento no barramento do Eventarc Advanced, você pode verificar os registros do serviço do Cloud Run para verificar se o evento foi recebido conforme o esperado.
Filtre as entradas de registro criadas pelo seu serviço:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.workflows.workflow.v1.created."'Procure uma entrada de registro semelhante a esta:
message: 'Received event of type google.cloud.workflows.workflow.v1.created. Event data: {"@type":"type.googleapis.com/google.events.cloud.workflows.v1.WorkflowEventData","payload":{"name":"projects/PROJECT_ID/locations/us-central1/workflows/example-workflow","state":"ACTIVE"...
Você criou um barramento e um registro do Eventarc Advanced, ativou a publicação de eventos de fontes do Google, criou um fluxo de trabalho para gerar um tipo de evento compatível de um provedor do Google e verificou o resultado esperado nos registros do serviço de receptor de eventos.
Limpar
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:
terraform destroy
Também é possível excluir seu projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Google Cloud interrompe o faturamento de todos os recursos usados nele.
- No console Google Cloud , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.