Guia de início rápido: receber eventos do Cloud Storage

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, mas sem usar os registros de auditoria do Cloud.

É possível configurar o acionamento de notificações em resposta a vários eventos dentro de um bucket do Cloud Storage: criação, exclusão e arquivamento de objetos e atualizações de metadados.

Neste guia de início rápido, você fará as seguintes tarefas:

  1. Criar um bucket do Cloud Storage para ser a origem do evento.

  2. Implantar um serviço de receptor de eventos no Cloud Run

  3. Criar um gatilho do Eventarc.

  4. Gerar um evento fazendo upload de um arquivo no 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.

  1. 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.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Ative as APIs Cloud Build, Cloud Logging, Cloud Run, Cloud Storage, Eventarc, and Pub/Sub .

    Ative as APIs

  5. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  6. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  7. Ative as APIs Cloud Build, Cloud Logging, Cloud Run, Cloud Storage, Eventarc, and Pub/Sub .

    Ative as APIs

  8. Atualize os componentes gcloud:
    gcloud components update
  9. Faça login usando sua conta:
    gcloud auth login
  10. 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
    Substitua PROJECT_ID pelo ID do projeto do Google Cloud. Encontre o ID do projeto na página Painel do Console do Google Cloud.
  11. Atribua o papel pubsub.publisher à conta de serviço do Cloud Storage:

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role='roles/pubsub.publisher'
    

  12. 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'
    

    Substitua PROJECT_NUMBER pelo número do projeto do Google Cloud. É possível encontrar o número do projeto na página Painel do Console do Google Cloud.

  13. Faça o download e instale a ferramenta de gerenciamento de código-fonte Git.

crie um bucket do Cloud Storage

Criar um bucket do Cloud Storage para usar como origem do evento:

gsutil mb -l us-central1 gs://PROJECT_ID-bucket/

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.

  1. Clone o repositório e altere para o diretório que contém o código de amostra do Cloud Run:

    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
    
  2. Crie o contêiner e faça upload dele para o Cloud Build:

     gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld-events
    
  3. 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, 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.

  1. Crie um gatilho que filtre eventos do Cloud Storage e que use a conta de serviço padrão do Compute Engine:

     gcloud eventarc triggers create storage-events-trigger \
         --destination-run-service=helloworld-events \
         --destination-run-region=us-central1 \
         --event-filters="type=google.cloud.storage.object.v1.finalized" \
         --event-filters="bucket=PROJECT_ID-bucket" \
         --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
    

    Isso cria um gatilho chamado storage-events-trigger.

  2. Para confirmar se storage-events-trigger foi criado, execute:

     gcloud eventarc triggers list --location=us-central1
    

    A saída será assim:

     NAME                    TYPE                                      DESTINATION_RUN_SERVICE  DESTINATION_RUN_PATH  ACTIVE
     storage-events-trigger  google.cloud.storage.object.v1.finalized  helloworld-events                              Yes
    

Gerar e visualizar um evento

  1. 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://PROJECT_ID-bucket/random.txt
    

    O upload gera um evento e o serviço do Cloud Run registra a mensagem do evento.

  2. Para visualizar a entrada de registro:

    1. Filtre as entradas de registro e retorne a saída no formato JSON:

      gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
      
    2. Procure uma entrada de registro semelhante a esta:

      "textPayload": "2021/08/09 19:04:25 Detected change in Cloud Storage bucket: objects/random.txt"
      

Parabéns! Você implantou com sucesso um serviço de receptor de eventos no Cloud Run, criou um gatilho do Eventarc, gerou um evento a partir do Cloud Storage e o visualizou nos registros do Cloud Run.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

O Cloud Run não gera custos quando o serviço não está em uso, mas ainda é possível receber cobranças pelo armazenamento da imagem do contêiner no Container Registry, pelo armazenamento de arquivos no bucket do Cloud Storage e por recursos do Eventarc.

Você pode:

  1. Excluir a imagem.

  2. Excluir o bucket de armazenamento.

  3. Excluir o gatilho do Eventarc.

Como alternativa, é possível excluir seu projeto do Cloud para interromper o faturamento de todos os recursos usados nesse projeto.

Para excluir seu projeto:

gcloud projects delete PROJECT_ID_OR_NUMBER

Substitua PROJECT_ID_OR_NUMBER pelo ID ou número do projeto do Google Cloud.

A seguir