Receber eventos usando os Registros de auditoria do Cloud (CLI gcloud)
Neste guia de início rápido, mostramos como receber eventos do Cloud Storage em um serviço não autenticado do Cloud Run usando o Eventarc.
Conclua este guia de início rápido usando a Google Cloud CLI. Para ver instruções usando o console, consulte Criar um gatilho usando o (Console do Google Cloud).
Neste guia de início rápido, você fará as seguintes tarefas:
Criar um bucket do Cloud Storage para ser a origem do evento.
Implantar um serviço de receptor de eventos no Cloud Run
Criar um gatilho de eventos.
Gerar um evento por meio do upload de um arquivo para o bucket do Cloud Storage e visualizá-lo nos registros do Cloud Run.
Antes de começar
Algumas das etapas deste documento podem não funcionar corretamente se sua organização aplicar restrições ao ambiente do Google Cloud. Nesse caso, talvez não seja possível concluir tarefas como criar endereços IP públicos ou chaves de contas de serviço. Se você fizer uma solicitação que retorne um erro sobre restrições, veja como Desenvolver aplicativos em um ambiente restrito do Google Cloud.
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.
- Atualize os componentes
gcloud
:gcloud components update
- Faça login usando sua conta:
gcloud auth login
- Defina as variáveis de configuração usadas neste guia de início rápido:
gcloud config set project PROJECT_ID gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
- Ative os tipos de registro de auditoria do Cloud: Leitura de administradores, Leitura de dados e Gravação de dados no
Cloud Storage.
No nível do projeto, é preciso ter o papel de gerenciamento de identidade e acesso
roles/owner
para configurar os registros de auditoria de acesso a dados para os recursos do Google Cloud.- Leia a política de IAM do projeto e guarde-a em um arquivo:
gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
- Edite sua política em
/tmp/policy.yaml
, adicionar ou alterar somente a configuração dos registros de auditoria de acesso a dados.auditConfigs: - auditLogConfigs: - logType: ADMIN_READ - logType: DATA_WRITE - logType: DATA_READ service: storage.googleapis.com
- Grave a nova política de IAM:
gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
Se o comando anterior relatar um conflito com outra alteração, repita essas etapas, começando com a leitura da política de IAM do projeto.
- Leia a política de IAM do projeto e guarde-a em um arquivo:
- Conceda o papel
eventarc.eventReceiver
à conta de serviço do Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role='roles/eventarc.eventReceiver'
- Se você ativou a conta de serviço do Pub/Sub até 8 de abril
de 2021, conceda o papel
iam.serviceAccountTokenCreator
à conta de serviço do Pub/Sub:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com"\ --role='roles/iam.serviceAccountTokenCreator'
- Faça o download e instale a ferramenta de gerenciamento de código-fonte Git.
crie um bucket do Cloud Storage
No guia de início rápido, usamos o Cloud Storage como origem do evento. Para criar um bucket de armazenamento:
gsutil mb -l us-central1 gs://events-quickstart-PROJECT_ID/
Depois que a origem do evento é criada, implante o serviço de receptor de eventos no Cloud Run.
Implantar o serviço de receptor de eventos no Cloud Run
Implante um serviço do Cloud Run que recebe e registra eventos. Para implantar o serviço de receptor de eventos de amostra:
Clone o repositório:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
.NET
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
Crie o contêiner e faça upload dele para o Cloud Build:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld-events
Implante a imagem do contêiner no Cloud Run:
gcloud run deploy helloworld-events \ --image gcr.io/PROJECT_ID/helloworld-events \ --allow-unauthenticated
Quando a implantação for bem-sucedida, a linha de comando exibirá o URL de serviço.
Agora que você implantou o serviço de receptor de eventos chamado
helloworld-events
no Cloud Run (totalmente gerenciado), configure o gatilho.
Criar um gatilho do Eventarc
O gatilho do Eventarc envia eventos do bucket do Cloud Storage para
o serviço helloworld-events
do Cloud Run.
Crie um gatilho que filtre eventos do Cloud Storage e que usem a conta de serviço padrão do Compute Engine do projeto do Google Cloud:
gcloud eventarc triggers create events-quickstart-trigger \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --service-account=
PROJECT_NUMBER
-compute@developer.gserviceaccount.comIsso cria um gatilho chamado
events-quickstart-trigger
.Para confirmar se
events-quickstart-trigger
foi criado, execute:gcloud eventarc triggers list --location=us-central1
events-quickstart-trigger
é exibido listado com um destino dehelloworld-events
.
Gerar e visualizar um evento
Para gerar um evento:
Faça upload de um arquivo de texto para o Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://events-quickstart-PROJECT_ID/random.txt
O upload gera um evento e o serviço do Cloud Run registra a mensagem do evento.
Para ver as entradas de registro relacionadas a eventos criadas pelo seu serviço:
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events AND NOT resource.type=build"
Procure uma entrada de registro semelhante a esta:
Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
Em que
BUCKET_NAME
é o nome do bucket do Cloud Storage.
Parabéns! Você implantou com sucesso um serviço de receptor de eventos no Cloud Run, criou um gatilho do Eventarc, gerou um evento do Cloud Storage e o visualizou nos registros do Cloud Run.
Limpeza
O Cloud Run não gera custos quando o serviço não está em uso, mas ainda é possível receber cobranças por armazenamento da imagem de contêiner no Container Registry, recursos do Eventarc e armazenamento de arquivos no bucket do Cloud Storage.
É possível excluir a imagem e excluir o bucket de armazenamento. Para excluir o gatilho do Eventarc:
gcloud eventarc triggers delete events-quickstart-trigger
Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Cloud interrompe o faturamento de todos os recursos usados nele.
gcloud projects delete PROJECT_ID_OR_NUMBER
- Substitua PROJECT_ID_OR_NUMBER pelo código ou número do projeto.