Um registro identifica uma assinatura de um barramento específico. A inscrição define os critérios de correspondência que determinam quais mensagens são encaminhadas para um destino. Ele também especifica o pipeline pelo qual as mensagens correspondentes devem ser roteadas. Um pipeline permite configurar um destino de destino e também oferece a opção de transformar os eventos correspondentes antes de enviá-los ao destino.
Observe o seguinte:
- Um pipeline e uma inscrição precisam estar no mesmo projeto do Google Cloud. O bus pode estar no mesmo projeto ou em um projeto diferente.
- Um pipeline pode ser usado para várias inscrições.
- Apenas um destino pode ser o destino das mensagens roteadas por um pipeline.
- Antes de configurar um pipeline ou uma inscrição, você precisa ter criado um bus avançado do Eventarc.
Funções exigidas
Uma função do Identity and Access Management (IAM) contém um conjunto de permissões que permite realizar ações específicas nos recursos do Google Cloud. Os papéis e as permissões a seguir são necessários ao criar um pipeline e uma inscrição para encaminhar mensagens:
- Para receber a permissão necessária para criar um pipeline, peça ao
administrador para conceder a você o papel do IAM de
desenvolvedor do Eventarc
(
roles/eventarc.developer
) no seu projeto de pipeline. Esse papel predefinido contém a permissãoeventarc.pipelines.create
, que é necessária para criar um pipeline. - Para receber a permissão necessária para criar uma inscrição, peça ao
administrador para conceder a você o papel do IAM de
desenvolvedor do Eventarc
(
roles/eventarc.developer
) no projeto de inscrição. Esse papel predefinido contém a permissãoeventarc.enrollments.create
, que é necessária para criar uma inscrição. - Para receber a permissão necessária para usar um bus, peça ao
administrador para conceder a você o papel do IAM de
Usuário da bus de mensagens do Eventarc
(
roles/eventarc.messageBusUser
) no projeto da bus. Esse papel predefinido contém a permissãoeventarc.buses.use
, que é necessária para usar um barramento.
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso. Também é possível conseguir essas permissões com papéis personalizados ou outros papéis predefinidos.
Inscrever-se para receber eventos
É possível criar um pipeline e uma inscrição no console do Google Cloud ou usando a Google Cloud CLI.
Console
No console do Google Cloud, é possível criar o pipeline e a inscrição ao mesmo tempo na página Pipelines.
Para criar uma inscrição, acesse a página Eventarc > Pipelines no console do Google Cloud.
Clique em
Criar pipeline.No painel Detalhes do pipeline, faça o seguinte:
- Insira um Nome do pipeline. Esse é o ID do seu pipeline.
- Na lista Região, selecione uma região para implantar o pipeline. O pipeline precisa ser criado na mesma região do barramento. Para mais informações, consulte Locais avançados do Eventarc.
- Opcional: é possível modificar a configuração padrão para tentar novamente os eventos.
- Em Criptografia, aceite a chave de criptografia gerenciada pelo Google padrão ou selecione Chave do Cloud KMS. Para mais informações, consulte Usar chaves de criptografia gerenciadas pelo cliente (CMEK).
Se você selecionar Chave do Cloud KMS, faça o seguinte:
Na lista Tipo de chave, selecione um método para gerenciar as chaves.
Você pode gerenciar as chaves manualmente ou usar o Autokey, que permite gerar chaves e chaveiros sob demanda. Se a opção Autokey estiver desativada, ela ainda não estará integrada ao tipo de recurso atual.
Em Selecionar uma chave gerenciada pelo cliente, selecione uma chave.
É necessário selecionar uma região para visualizar as chaves gerenciadas pelo cliente.
Opcional: para inserir manualmente o nome do recurso da chave, na lista Selecionar uma chave gerenciada pelo cliente, clique em Inserir chave manualmente e insira o nome da chave no formato especificado.
Se solicitado, conceda o papel
cloudkms.cryptoKeyEncrypterDecrypter
ao Agente de serviço do Eventarc.
Opcional: para adicionar rótulos, clique em O que são rótulos?
Adicionar rótulo. Os rótulos são pares de chave-valor que ajudam você a organizar seus recursos do Google Cloud. Para mais informações, consulteClique em Continuar.
No painel Matrículas, faça o seguinte:
- Clique em Adicionar uma inscrição.
- Insira um nome de inscrição.
- Na lista Ônibus, selecione um ônibus para assinar.
No campo Expressão CEL, escreva uma expressão de avaliação usando CEL. Exemplo:
message.type == "google.cloud.dataflow.job.v1beta3.statusChanged"
A expressão padrão, true, indica que todas as mensagens são roteadas sem filtros.
Clique em Concluído.
Você pode adicionar outra inscrição ou clicar em Continuar.
Opcional: no painel Mediação de eventos, faça o seguinte ou clique em Continuar:
- Marque a caixa de seleção Aplicar uma transformação.
Na lista Formato de entrada, selecione o formato aplicável.
Ao aplicar uma transformação, é necessário especificar um formato de dados de entrada para um pipeline e todos os eventos precisam corresponder a esse formato.
Para formatos Avro ou Protobuf, é necessário especificar um esquema de entrada. Se preferir, faça upload de um esquema de entrada. Para mais informações, consulte Formatar eventos recebidos.
No campo Expressão CEL, escreva uma expressão de transformação usando CEL.
Clique em Continuar.
No painel Destino, faça o seguinte:
Na lista Tipo de destino, selecione um tipo de destino para encaminhar mensagens. Dependendo do tipo de destino, faça o seguinte:
Endpoint HTTP: especifique o URI de destino. O host pode ser um IP estático endereçável de uma rede de nuvem privada virtual (VPC, na sigla em inglês) ou o nome de host do sistema de nomes de domínio (DNS) interno de um serviço que pode ser resolvido usando o Cloud DNS.
É possível usar esse tipo de destino para segmentar uma função do Cloud Run.
Barramento do Eventarc Advanced: selecione um barramento do Eventarc Advanced.
Fluxo de trabalho do Workflows: selecione um fluxo de trabalho do Workflows.
Tópico do Pub/Sub: selecione ou crie um tópico do Pub/Sub.
Serviço do Cloud Run (via HTTP): selecione um serviço do Cloud Run que vai receber eventos como solicitações HTTP
POST
enviadas para o caminho do URL raiz (/
). Se preferir, especifique um caminho de URL relativo no serviço de destino para onde os eventos vão ser enviados.Job do Cloud Run (via HTTP): selecione um job do Cloud Run que vai receber eventos como solicitações HTTP
POST
.
Especifique um anexo de rede.
Um anexo de rede é um recurso que permite que uma rede VPC do produtor inicie conexões com uma rede VPC do consumidor. Para publicar eventos, o Eventarc Advanced usa o anexo de rede para estabelecer uma conexão com o endpoint hospedado em uma rede VPC.
É possível criar um anexo de rede que aceite automaticamente conexões de qualquer interface do Private Service Connect que se refira ao anexo de rede. Crie o anexo de rede na mesma rede e região que contém o endpoint de destino.
Se você estiver encaminhando mensagens para um destino do Google usando um endereço DNS, como o Cloud Run, o Pub/Sub, Workflows ou outro bus avançado do Eventarc, verifique se o Acesso privado do Google está ativado na sub-rede usada no anexo de rede. Caso contrário, não será possível resolver o endereço DNS.
Se aplicável, selecione um formato na lista Formato de saída.
Se um formato de dados de entrada não for especificado para um pipeline, não será possível definir um formato de saída.
Se aplicável, aplique uma Vinculação de mensagem. Para mais informações, consulte Definir uma vinculação de mensagem.
Para ativar a autenticação, marque a caixa de seleção Ativar autenticação.
Na lista Auth header, selecione o tipo de token a ser gerado e anexe como um cabeçalho
Authorization
na solicitação HTTP:Um token OAuth geralmente é usado apenas ao chamar APIs do Google hospedadas em
*.googleapis.com
. Como alternativa, especifique o escopo desse token. Caso contrário, o padrão seráhttps://www.googleapis.com/auth/cloud-platform
. Para serviços do Google Cloud, é uma prática recomendada usar o escopohttps://www.googleapis.com/auth/cloud-platform
, que inclui todas as APIs do Google Cloud, além de Identity and Access Management (IAM), que fornece controle de acesso refinado.Todas as solicitações para outro bus avançado do Eventarc, Pub/Sub ou Workflows precisam ter um cabeçalho de autorização HTTP com um token OAuth assinado pelo Google para uma das contas de serviço autorizadas.
Um token OIDC pode ser usado em vários cenários, incluindo endpoints em que você pretende validar o token. Além disso, especifique o público-alvo desse token. Em geral, ele precisa corresponder ao URL do pipeline de destino. Se não for especificado, o URL inteiro será usado, incluindo todos os parâmetros de solicitação.
O Cloud Run executa uma verificação do IAM em cada solicitação, e você pode usar a permissão
run.routes.invoke
para configurar quem pode acessar seu serviço do Cloud Run das seguintes maneiras:Conceda a permissão para selecionar contas de serviço ou grupos para permitir o acesso ao serviço. Todas as solicitações precisam ter um cabeçalho de autorização HTTP com um token do OpenID Connect assinado pelo Google para uma das contas de serviço autorizadas.
Conceda a permissão a allUsers para permitir o acesso não autenticado.
Para mais informações, consulte Controle de acesso do Cloud Run.
Saiba mais sobre os tipos de token.
Na lista Conta de serviço, selecione a conta de serviço que vai invocar o serviço de destino. ou crie uma nova conta de serviço.
Ele especifica o e-mail da conta de serviço do IAM associado ao pipeline e ao qual você concedeu papéis específicos exigidos pelo Eventarc Advanced.
Clique em Criar.
gcloud
Ao usar a CLI gcloud, primeiro crie o pipeline e, em seguida, crie a inscrição usando os comandos apropriados.
Pipeline
Abra um terminal.
Crie um pipeline usando o comando
gcloud beta eventarc pipelines create
:gcloud beta eventarc pipelines create PIPELINE_NAME \ --destinations=DESTINATION_KEY \ --location=REGION
Substitua:
PIPELINE_NAME
: o ID do pipeline ou um nome totalmente qualificadoDESTINATION_KEY
: um ou mais pares de chave-valor para configurar um destino para o pipelineÉ necessário definir apenas uma das seguintes chaves:
http_endpoint_uri
: um URI de destino. O host pode ser um IP estático endereçável de uma rede de nuvem privada virtual (VPC, na sigla em inglês) ou o nome de host do sistema de nomes de domínio (DNS) interno de um serviço que pode ser resolvido usando o Cloud DNS. Como alternativa, é possível definirhttp_endpoint_message_binding_template
para especificar uma vinculação de mensagem.É possível usar essa chave para segmentar uma função do Cloud Run, um job do Cloud Run ou um serviço do Cloud Run que vai receber eventos como solicitações HTTP
POST
.message_bus
: o ID de um barramento do Eventarc Advanced.pubsub_topic
: o ID de um tópico do Pub/Sub.workflow
: o ID de um fluxo de trabalho do Workflows.
É necessário definir a seguinte chave:
network_attachment
: um recurso que permite que uma rede VPC de produtor inicie conexões com uma rede VPC de consumidor. Para publicar eventos, o Eventarc Advanced usa o anexo de rede para estabelecer uma conexão com o endpoint hospedado em uma rede VPC.É possível criar um anexo de rede que aceite automaticamente conexões de qualquer interface do Private Service Connect que se refira ao anexo de rede. Crie o anexo de rede na mesma rede e região que contém o recurso de destino.
Se você estiver roteando mensagens para um destino do Google usando um endereço DNS, como o Cloud Run, o Pub/Sub, o Workflows ou outro bus do Eventarc Advanced, verifique se o Acesso privado do Google está ativado na sub-rede usada no anexo de rede. Caso contrário, não será possível resolver o endereço DNS.
Para ativar a autenticação, defina uma das seguintes chaves:
google_oidc_authentication_service_account
: o e-mail da conta de serviço usado para gerar um token OIDC, que pode ser usado em vários cenários, incluindo endpoints em que você pretende validar o token. Opcionalmente, é possível definirgoogle_oidc_authentication_audience
para especificar o público-alvo desse token. Geralmente, ele precisa corresponder ao URL do pipeline de destino. Se não for especificado, o URL inteiro será usado, incluindo todos os parâmetros de solicitação.O Cloud Run executa uma verificação do IAM em cada solicitação, e você pode usar a permissão
run.routes.invoke
para configurar quem pode acessar seu serviço do Cloud Run das seguintes maneiras:Conceda a permissão para selecionar contas de serviço ou grupos para permitir o acesso ao serviço. Todas as solicitações precisam ter um cabeçalho de autorização HTTP com um token do OpenID Connect assinado pelo Google para uma das contas de serviço autorizadas.
Conceda a permissão a allUsers para permitir o acesso não autenticado.
Para mais informações, consulte Controle de acesso do Cloud Run .
oauth_token_authentication_service_account
: o e-mail da conta de serviço usado para gerar um token OAuth, que geralmente só é usado ao chamar APIs do Google hospedadas em*.googleapis.com
. Também é possível definiroauth_token_authentication_scope
para especificar o escopo desse token. Caso contrário, o padrão seráhttps://www.googleapis.com/auth/cloud-platform
. Para serviços do Google Cloud, é uma prática recomendada usar o escopohttps://www.googleapis.com/auth/cloud-platform
, que inclui todas as APIs do Google Cloud, além de Identity and Access Management (IAM), que fornece controle de acesso refinado.Todas as solicitações para outro bus avançado do Eventarc, Pub/Sub ou Workflows precisam ter um cabeçalho de autorização HTTP com um token OAuth assinado pelo Google para uma das contas de serviço autorizadas.
Saiba mais sobre os tipos de token.
Opcional: é possível definir uma das seguintes chaves:
output_payload_format_avro_schema_definition
output_payload_format_json
output_payload_format_protobuf_schema_definition
Se você definir um formato de saída, também precisará especificar um formato de entrada (consulte as flags
input-payload-format-*
abaixo).
Opcional: se
http_endpoint_uri
não for usado como uma chave de destino, defina as seguintes chaves:project
: o ID do projeto do Google Cloud do recurso de destino. Por padrão, o ID do projeto do pipeline é usado.location
: o local do recurso de destino. Por padrão, o local do pipeline é usado.
REGION
: um local do Eventarc Advanced compatível.Como alternativa, defina a propriedade de local da CLI gcloud:
gcloud config set eventarc/location REGION
Opcional: é possível usar as seguintes flags:
--async
para retornar do comando imediatamente, sem aguardar a conclusão da operação em andamento.--crypto-key
para especificar o nome totalmente qualificado de uma chave de criptografia gerenciada pelo cliente. Se não for especificado, chaves gerenciadas pelo Google serão usadas.--logging-config
para configurar o nível de registro, que precisa ser um destes:NONE
,DEBUG
,INFO
,NOTICE
,WARNING
,ERROR
,CRITICAL
,ALERT
,EMERGENCY
.--mediations
para aplicar uma transformação.transformation_template
é o único modelo aceito, e apenas uma mediação por pipeline é aceita. Por exemplo:--mediations=transformation_template='message.removeFields(["id\ ","credit_card_number","age"])'
Se você estiver aplicando uma transformação, é necessário usar uma das flags a seguir para especificar um formato de entrada.
Uma das seguintes opções para especificar um formato de entrada:
--input-payload-format-avro-schema-definition
--input-payload-format-json
--input-payload-format-protobuf-schema-definition
--max-retry-attempts
,--max-retry-delay
e--min-retry-delay
para tentar novamente
Exemplo:
gcloud beta eventarc pipelines create my-pipeline \ --destinations=http_endpoint_uri='https://example-endpoint.com',network_attachment=my-network-attachment,oauth_token_authentication_service_account=example-service-account@example-project.gserviceaccount.iam.com,oauth_token_authentication_scope='https://www.googleapis.com/auth/cloud-platform',output_payload_format_avro_schema_definition='{"type": "record","name": "my_record", "fields": [{"name": "my_field", "type":"string"}]}' \ --input-payload-format-avro-schema-definition='{"type":"record", "name": "my_record", "fields": [{"name": "my_field","type": "string"}]}' \ --location=us-central1 \ --async
Para mais detalhes e exemplos, consulte a documentação da CLI gcloud.
Registro
Abra um terminal.
Crie uma inscrição usando o comando
gcloud beta eventarc enrollments create
:gcloud beta eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=REGION
Substitua:
ENROLLMENT_NAME
: o ID da inscrição ou um nome totalmente qualificado.MATCH_EXPRESSION
: a expressão correspondente para essa inscrição usando CEL, por exemplo,"message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'"
PIPELINE_NAME
: o ID do pipeline de destino ou o nome totalmente qualificado para essa inscriçãoBUS_NAME
: o ID do bus avançado do Eventarc ou o nome totalmente qualificado dele.PROJECT_ID
: o ID do projeto do Google Cloud para o bus.REGION
: um local do Eventarc Advanced compatível.Como alternativa, defina a propriedade de local da CLI gcloud:
gcloud config set eventarc/location REGION
Opcional: use a flag a seguir:
--async
para retornar do comando imediatamente, sem aguardar a conclusão da operação em andamento.
Exemplo:
gcloud beta eventarc enrollments create my-enrollment \ --cel-match="message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'" \ --destination-pipeline=my-pipeline \ --message-bus=my-message-bus \ --message-bus-project=another-google-cloud-project \ --location=us-central1 \ --async
Excluir uma inscrição
É possível excluir uma inscrição no console do Google Cloud ou usando a Google Cloud CLI.
Console
Para excluir uma inscrição, no console do Google Cloud, acesse a página Eventarc > Pipelines.
Clique no nome do pipeline de onde você quer excluir a inscrição.
O painel Detalhes do pipeline é aberto.
Clique em Continuar.
O painel Matrículas é aberto.
Para a matrícula que você quer excluir, clique no ícone de exclusão
.Clique em Salvar.
gcloud
Abra um terminal.
Exclua uma inscrição usando o comando
gcloud beta eventarc enrollments delete
:gcloud beta eventarc enrollments delete ENROLLMENT_NAME \ --location=REGION
Substitua:
ENROLLMENT_NAME
: o ID da inscrição ou um nome totalmente qualificado.REGION
: o local do Eventarc Advanced compatível da inscrição
Excluir um pipeline
É possível excluir um pipeline no console do Google Cloud ou usando a Google Cloud CLI.
A exclusão de um pipeline pode levar mais de 10 minutos.
Console
Para excluir um pipeline, no console do Google Cloud, acesse a página Eventarc > Pipelines.
Na lista de pipelines, marque a caixa de seleção ao lado do nome do pipeline que você quer excluir.
Clique em
Excluir.Digite
Delete
para confirmar a exclusão.Clique em Excluir.
gcloud
Abra um terminal.
Exclua um pipeline usando o comando
gcloud beta eventarc pipelines delete
:gcloud beta eventarc pipelines delete PIPELINE_NAME \ --location=REGION
Substitua:
PIPELINE_NAME
: o ID do pipeline ou um nome totalmente qualificadoREGION
: o local do Eventarc Advanced compatível do pipeline