Este tutorial demonstra a utilização do Cloud Run, da Cloud Vision API e do ImageMagick para detetar e esbater imagens ofensivas carregadas para um contentor do Cloud Storage. Este tutorial baseia-se no tutorial Use o Pub/Sub com o Cloud Run.
Este tutorial explica como modificar uma app de exemplo existente. Também pode transferir o exemplo concluído, se quiser.
Objetivos
- Escreva, crie e implemente um serviço de processamento de dados assíncrono no Cloud Run.
- Invocar o serviço carregando um ficheiro para o Cloud Storage ou criando uma mensagem do Pub/Sub.
- Use a API Cloud Vision para detetar conteúdo violento ou para adultos.
- Use o ImageMagick para esbater imagens ofensivas.
- Teste o serviço carregando uma imagem de um zombie carnívoro.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização prevista,
use a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Pub/Sub, Cloud Run, Cloud Storage and Cloud Vision APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Instale e inicialize a CLI gcloud.
- Atualize os componentes:
gcloud components update
- Configure um tópico do Pub/Sub, uma subscrição push segura e um serviço do Cloud Run inicial para processar mensagens seguindo o tutorial Usar o Pub/Sub
-
Editor do Cloud Build (
roles/cloudbuild.builds.editor) -
Administrador do Cloud Run (
roles/run.admin) -
Logs View Accessor (
roles/logging.viewAccessor) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) -
Administrador do Pub/Sub (
roles/pubsub.admin) -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser) -
Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer) -
Administrador de armazenamento (
roles/storage.admin)
Funções necessárias
Para receber as autorizações de que precisa para concluir o tutorial, peça ao seu administrador para lhe conceder as seguintes funções da IAM no seu projeto:
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Configurar predefinições do gcloud
Para configurar o gcloud com as predefinições do seu serviço do Cloud Run:
Defina o projeto predefinido:
gcloud config set project PROJECT_ID
Substitua PROJECT_ID pelo nome do projeto que criou para este tutorial.
Configure o gcloud para a região escolhida:
gcloud config set run/region REGION
Substitua REGION pela região do Cloud Run suportada à sua escolha.
Localizações do Cloud Run
O Cloud Run é regional, o que significa que a infraestrutura que executa os seus serviços do Cloud Run está localizada numa região específica e é gerida pela Google para estar disponível de forma redundante em todas as zonas dessa região.
O cumprimento dos seus requisitos de latência, disponibilidade ou durabilidade são fatores
principais para selecionar a região onde os seus serviços do Cloud Run são executados.
Geralmente, pode selecionar a região mais próxima dos seus utilizadores, mas deve considerar a localização dos outros Google Cloudprodutos usados pelo seu serviço do Cloud Run.
A utilização Google Cloud de produtos em conjunto em várias localizações pode afetar
a latência do seu serviço, bem como o custo.
O Cloud Run está disponível nas seguintes regiões:
Sujeito aos preços de Nível 1
asia-east1(Taiwan)asia-northeast1(Tóquio)asia-northeast2(Osaca)asia-south1(Mumbai, Índia)europe-north1(Finlândia)Baixo CO2
europe-north2(Estocolmo)Baixo CO2
europe-southwest1(Madrid)Baixo CO2
europe-west1(Bélgica)Baixo CO2
europe-west4(Países Baixos)Baixo CO2
europe-west8(Milão)europe-west9(Paris)Baixo CO2
me-west1(Telavive)northamerica-south1(México)us-central1(Iowa)Baixo CO2
us-east1(Carolina do Sul)us-east4(Virgínia do Norte)us-east5(Columbus)us-south1(Dallas)Baixo CO2
us-west1(Oregão)Baixo CO2
Sujeito aos preços de Nível 2
africa-south1(Joanesburgo)asia-east2(Hong Kong)asia-northeast3(Seul, Coreia do Sul)asia-southeast1(Singapura)asia-southeast2(Jacarta)asia-south2(Deli, Índia)australia-southeast1(Sydney)australia-southeast2(Melbourne)europe-central2(Varsóvia, Polónia)europe-west10(Berlim)europe-west12(Turim)europe-west2(Londres, Reino Unido)Baixo CO2
europe-west3(Frankfurt, Alemanha)europe-west6(Zurique, Suíça)Baixo CO2
me-central1(Doha)me-central2(Dammam)northamerica-northeast1(Montreal)Baixo CO2
northamerica-northeast2(Toronto)Baixo CO2
southamerica-east1(São Paulo, Brasil)Baixo CO2
southamerica-west1(Santiago, Chile)Baixo CO2
us-west2(Los Angeles)us-west3(Salt Lake City)us-west4(Las Vegas)
Se já criou um serviço do Cloud Run, pode ver a região no painel de controlo do Cloud Run na Google Cloud consola.
Compreender a sequência de operações
O fluxo de dados neste tutorial segue estes passos:
- Um utilizador carrega uma imagem para um contentor do Cloud Storage.
- O Cloud Storage publica uma mensagem sobre o novo ficheiro no Pub/Sub.
- O Pub/Sub envia a mensagem para o serviço do Cloud Run.
- O serviço do Cloud Run obtém o ficheiro de imagem referenciado na mensagem do Pub/Sub.
- O serviço do Cloud Run usa a API Cloud Vision para analisar a imagem.
- Se for detetado conteúdo violento ou para adultos, o serviço Cloud Run usa o ImageMagick para esbater a imagem.
- O serviço do Cloud Run carrega a imagem esbatida para outro contentor do Cloud Storage para utilização.
A utilização subsequente da imagem esbatida é deixada como um exercício para o leitor.
Crie um repositório padrão do Artifact Registry
Crie um repositório padrão do Artifact Registry para armazenar a sua imagem de contentor:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Substituir:
- REPOSITORY com um nome exclusivo para o repositório.
- REGION com a Google Cloud região a usar para o repositório do Artifact Registry.
Configure contentores do Cloud Storage
gcloud
Crie um contentor do Cloud Storage para carregar imagens, onde INPUT_BUCKET_NAME é um nome de contentor exclusivo a nível global:
gcloud storage buckets create gs://INPUT_BUCKET_NAME
O serviço do Cloud Run só lê a partir deste contentor.
Crie um segundo contentor do Cloud Storage para receber imagens com efeito de esbatimento, em que BLURRED_BUCKET_NAME é um nome de contentor exclusivo a nível global:
gcloud storage buckets create gs://BLURRED_BUCKET_NAME
O serviço do Cloud Run carrega imagens esbatidas para este contentor. A utilização de um contentor separado impede que as imagens processadas acionem novamente o serviço.
Por predefinição, as revisões do Cloud Run são executadas como a conta de serviço predefinida do Compute Engine.
Em alternativa, se estiver a usar uma conta de serviço gerida pelo utilizador, certifique-se de que atribuiu as funções do IAM necessárias para que tenha autorização
storage.objects.getpara ler a partir de INPUT_BUCKET_NAME e autorizaçãostorage.objects.createpara carregar para BLURRED_BUCKET_NAME.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Crie dois contentores do Cloud Storage: um para carregar imagens originais e outro para o serviço do Cloud Run carregar imagens esbatidas.
Para criar ambos os contentores do Cloud Storage com nomes exclusivos a nível global, adicione o seguinte ao seu ficheiro main.tf existente:
Por predefinição, as revisões do Cloud Run são executadas como a conta de serviço predefinida do Compute Engine.
Em alternativa, se estiver a usar uma
conta de serviço gerida pelo utilizador, certifique-se de que
atribuiu as funções IAM necessárias
para que tenha autorização storage.objects.get para ler a partir de
google_storage_bucket.imageproc_input e
autorização storage.objects.create para carregar para
google_storage_bucket.imageproc_output.
Nos passos seguintes, cria e implementa um serviço que processa a notificação de carregamentos de ficheiros para o INPUT_BUCKET_NAME. Ative a entrega de notificações depois de implementar e testar o serviço para evitar a invocação prematura do novo serviço.
Modifique o código de exemplo do tutorial do Pub/Sub
Este tutorial baseia-se no código reunido no tutorial Usar o Pub/Sub. Se ainda não concluiu esse tutorial, faça-o agora, ignorando os passos de limpeza e, em seguida, volte aqui para adicionar o comportamento de processamento de imagens.
Adicione código de processamento de imagens
O código de processamento de imagens está separado do processamento de pedidos para facilitar a leitura e os testes. Para adicionar código de processamento de imagens:
Altere para o diretório do código de exemplo do tutorial do Pub/Sub.
Adicione código para importar as dependências de processamento de imagens, incluindo bibliotecas para integrar com Google Cloud serviços, o ImageMagick e o sistema de ficheiros.
Node.js
Abra um novo ficheiroimage.jsno editor e copie o seguinte:Python
Abra um novo ficheiroimage.pyno editor e copie o seguinte:Ir
Abra um novo ficheiroimagemagick/imagemagick.gono editor e copie o seguinte:Java
Abra um novo ficheirosrc/main/java/com/example/cloudrun/ImageMagick.javano editor e copie o seguinte:Adicione código para receber uma mensagem Pub/Sub como um objeto de evento e controlar o processamento de imagens.
O evento contém dados sobre a imagem carregada originalmente. Este código determina se a imagem tem de ser esbatida verificando os resultados de uma análise do Cloud Vision quanto a conteúdo violento ou para adultos.
Node.js
Python
Ir
Java
Recupere a imagem referenciada do contentor de entrada do Cloud Storage criado acima, use o ImageMagick para transformar a imagem com um efeito de esbatimento e carregue o resultado para o contentor de saída.
Node.js
Python
Ir
Java
Integre o processamento de imagens no código de exemplo do Pub/Sub
Para modificar o serviço existente de forma a incorporar o código de processamento de imagens:
Adicione novas dependências para o seu serviço, incluindo as bibliotecas de cliente do Cloud Vision e do Cloud Storage:
Node.js
npm install gm @google-cloud/storage @google-cloud/visionPython
Adicione as bibliotecas cliente necessárias para que o seurequirements.txttenha um aspeto semelhante ao seguinte:Ir
A aplicação de exemplo Go usa módulos Go. As novas dependências adicionadas acima na declaraçãoimagemagick/imagemagick.goimport são transferidas automaticamente pelo comando seguinte que as necessita.Java
Adicione a seguinte dependência em<dependencyManagement>nopom.xml: Adicione as seguintes dependências em<dependencies>nopom.xml:Adicione o pacote do sistema ImageMagick ao seu contentor modificando o
Dockerfileabaixo da declaraçãoFROM. Se usar um Dockerfile "de várias fases", coloque isto na fase final.Debian/Ubuntu Alpine Leia mais sobre como trabalhar com pacotes do sistema no seu serviço do Cloud Run no tutorial sobre a utilização de pacotes do sistema.
Substitua o código de processamento de mensagens Pub/Sub existente por uma chamada de função à nossa nova lógica de esbatimento.
Node.js
O ficheiroapp.jsdefine a app Express.js e prepara as mensagens Pub/Sub recebidas para utilização. Faça as seguintes alterações:- Adicione código para importar o novo ficheiro
image.js - Remova o código "Hello World" existente do caminho
- Adicione código para validar ainda mais a mensagem do Pub/Sub
Adicione código para chamar a nova função de processamento de imagens
Quando terminar, o código tem o seguinte aspeto:
Python
O ficheiromain.pydefine a app Flask e prepara as mensagens do Pub/Sub recebidas para utilização. Faça as seguintes alterações:- Adicione código para importar o novo ficheiro
image.py - Remova o código "Hello World" existente do caminho
- Adicione código para validar ainda mais a mensagem do Pub/Sub
Adicione código para chamar a nova função de processamento de imagens
Quando terminar, o código tem o seguinte aspeto:
Ir
O ficheiromain.godefine o serviço HTTP e prepara as mensagens do Pub/Sub recebidas para utilização. Faça as seguintes alterações:- Adicione código para importar o novo ficheiro
imagemagick.go - Remova o código "Hello World" existente do controlador
- Adicione código para validar ainda mais a mensagem do Pub/Sub
- Adicione código para chamar a nova função de processamento de imagens
Java
O ficheiroPubSubController.javadefine o controlador que processa os pedidos HTTP e prepara as mensagens Pub/Sub recebidas para utilização. Faça as seguintes alterações:- Adicione as novas importações
- Remova o código "Hello World" existente do controlador
- Adicione código para validar ainda mais a mensagem do Pub/Sub
- Adicione código para chamar a nova função de processamento de imagens
- Adicione código para importar o novo ficheiro
Transfira o exemplo completo
Para obter o exemplo de código de processamento de imagens completo para utilização:
Clone o repositório da app de exemplo para a sua máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Ir
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Altere para o diretório que contém o código de exemplo do Cloud Run:
Node.js
cd nodejs-docs-samples/run/image-processing/
Python
cd python-docs-samples/run/image-processing/
Ir
cd golang-samples/run/image-processing/
Java
cd java-docs-samples/run/image-processing/
Envie o código
O código de envio consiste em três passos: criar uma imagem de contentor com o Cloud Build, carregar a imagem de contentor para o Artifact Registry e implementar a imagem de contentor no Cloud Run.
Para enviar o código:
Crie o contentor e publique-o no Artifact Registry:
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Em que
pubsubé o nome do seu serviço.Substituir:
- PROJECT_ID com o seu Google Cloud ID do projeto
- REPOSITORY com o nome do repositório do Artifact Registry.
- REGION com a Google Cloud região a usar para o repositório do Artifact Registry.
Após a conclusão com êxito, é apresentada uma mensagem SUCCESS com o ID, a hora de criação e o nome da imagem. A imagem é armazenada no Artifact Registry e pode ser reutilizada, se necessário.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Em que
pubsubé o nome do seu serviço.Substituir:
- PROJECT_ID com o seu Google Cloud ID do projeto
- REPOSITORY com o nome do repositório do Artifact Registry.
- REGION com a Google Cloud região a usar para o repositório do Artifact Registry.
Após a conclusão com êxito, é apresentada uma mensagem SUCCESS com o ID, a hora de criação e o nome da imagem. A imagem é armazenada no Artifact Registry e pode ser reutilizada, se necessário.
Ir
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub
Em que
pubsubé o nome do seu serviço.Substituir:
- PROJECT_ID com o seu Google Cloud ID do projeto
- REPOSITORY com o nome do repositório do Artifact Registry.
- REGION com a Google Cloud região a usar para o repositório do Artifact Registry.
Após a conclusão com êxito, é apresentada uma mensagem SUCCESS com o ID, a hora de criação e o nome da imagem. A imagem é armazenada no Artifact Registry e pode ser reutilizada, se necessário.
Java
Este exemplo usa o Jib para criar imagens do Docker com ferramentas comuns do Java. O Jib otimiza as compilações de contentores sem necessidade de um Dockerfile ou de ter o Docker instalado. Saiba mais sobre como criar contentores Java com o Jib.Usando o Dockerfile, configure e crie uma imagem de base com os pacotes do sistema instalados para substituir a imagem de base predefinida do Jib:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/imagemagick
Substituir:
- PROJECT_ID com o seu Google Cloud ID do projeto
- REPOSITORY com o nome do repositório do Artifact Registry.
- REGION com a Google Cloud região a usar para o repositório do Artifact Registry.
Use o auxiliar de credenciais gcloud para autorizar o Docker a enviar para o seu Artifact Registry.
gcloud auth configure-docker
Crie o contentor final com o Jib e publique-o no Artifact Registry:
mvn compile jib:build \ -Dimage=REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub \ -Djib.from.image=REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/imagemagick
Substituir:
- PROJECT_ID com o seu Google Cloud ID do projeto
- REPOSITORY com o nome do repositório do Artifact Registry.
- REGION com a Google Cloud região a usar para o repositório do Artifact Registry.
Execute o seguinte comando para implementar o seu serviço, usando o mesmo nome do serviço que usou no tutorial Usar o Pub/Sub:
Node.js
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Python
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Ir
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --no-allow-unauthenticated
Java
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID /REPOSITORY/pubsub --set-env-vars=BLURRED_BUCKET_NAME=BLURRED_BUCKET_NAME --memory 512M --no-allow-unauthenticated
Onde
pubsubé o nome do contentor epubsub-tutorialé o nome do serviço. Tenha em atenção que a imagem do contentor é implementada no serviço e na região (Cloud Run) que configurou anteriormente em Configurar predefinições do gcloud. Substituir:- PROJECT_ID com o seu Google Cloud ID do projeto
- REPOSITORY com o nome do repositório do Artifact Registry.
- REGION com a Google Cloud região a usar para o repositório do Artifact Registry.
- BLURRED_BUCKET_NAME com o contentor do Cloud Storage que criou anteriormente para receber imagens esbatidas para definir a variável de ambiente.
A flag
--no-allow-unauthenticatedrestringe o acesso não autenticado ao serviço. Ao manter o serviço privado, pode confiar na integração automática do Pub/Sub do Cloud Run para autenticar pedidos. Consulte o artigo Integração com o Pub/Sub para ver mais detalhes sobre como esta opção é configurada. Consulte o artigo Gerir o acesso para mais detalhes sobre a autenticação baseada na IAM.Aguarde até que a implementação esteja concluída. Esta ação pode demorar cerca de meio minuto. Se for bem-sucedido, a linha de comandos apresenta o URL do serviço.
Ative as notificações do Cloud Storage
Configurar o Cloud Storage para publicar uma mensagem num tópico do Pub/Sub sempre que um ficheiro (conhecido como um objeto) é carregado ou alterado. Envie a notificação para o tópico criado anteriormente para que qualquer novo carregamento de ficheiro invoque o serviço.
gcloud
gcloud storage service-agent --project=PROJECT_ID gcloud storage buckets notifications create gs://INPUT_BUCKET_NAME --topic=myRunTopic --payload-format=json
myRunTopic é o tópico que criou no tutorial anterior.
Substitua INPUT_BUCKET_NAME pelo nome que usou quando criou os grupos.
Para mais detalhes sobre as notificações de contentores de armazenamento, leia as notificações de alterações de objetos.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Para ativar as notificações, a conta de serviço do Cloud Storage
exclusiva do projeto tem de existir e ter a autorização de IAM
pubsub.publisher no tópico do Pub/Sub. Para conceder esta autorização e criar uma notificação do Cloud Storage, adicione o seguinte ao seu ficheiro main.tf existente:
Experimentar
Carregar uma imagem ofensiva, como esta imagem de um zombie carnívoro:
curl -o zombie.jpg https://cdn.pixabay.com/photo/2015/09/21/14/24/zombie-949916_960_720.jpg gcloud storage cp zombie.jpg gs://INPUT_BUCKET_NAME
onde INPUT_BUCKET_NAME é o contentor do Cloud Storage que criou anteriormente para carregar imagens.
Navegue para os registos de serviço:
- Navegue para a página do Cloud Run na Google Cloud consola
- Clique no serviço
pubsub-tutorial. - Selecione o separador Registos. Os registos podem demorar alguns momentos a aparecer. Se não os vir imediatamente, verifique novamente após alguns momentos.
Procure a mensagem
Blurred image: zombie.png.Pode ver as imagens esbatidas no contentor do BLURRED_BUCKET_NAMECloud Storage que criou anteriormente: localize o contentor na página do Cloud Storage na Google Cloud consola
Limpar
Para evitar custos adicionais na sua conta Google Cloud , elimine todos os recursos que implementou com este tutorial.
Elimine o projeto
Se criou um novo projeto para este tutorial, elimine-o. Se usou um projeto existente e precisa de o manter sem as alterações que adicionou neste tutorial, elimine os recursos que criou para o tutorial.
A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.
Para eliminar o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimine recursos de tutoriais
Elimine o serviço do Cloud Run que implementou neste tutorial. Os serviços do Cloud Run não incorrem em custos até receberem pedidos.
Para eliminar o seu serviço do Cloud Run, execute o seguinte comando:
gcloud run services delete SERVICE-NAME
Substitua SERVICE-NAME pelo nome do seu serviço.
Também pode eliminar serviços do Cloud Run a partir da Google Cloud consola.
Remova a configuração da região predefinida
gcloudque adicionou durante a configuração do tutorial:gcloud config unset run/regionRemova a configuração do projeto:
gcloud config unset projectElimine outros Google Cloud recursos criados neste tutorial:
- Elimine o tópico do Pub/Sub
myRunTopic - Elimine a subscrição do Pub/Sub
myRunSubscription - Elimine a imagem de contentor do Artifact Registry.
- Elimine a conta de serviço do invocador
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com - Elimine os contentores do Cloud Storage criados para os marcadores de posição
INPUT_BUCKET_NAMEeBLURRED_BUCKET_NAME
- Elimine o tópico do Pub/Sub
O que se segue?
- Saiba como persistir dados com o Cloud Run através do Cloud Storage.
- Compreenda como usar a API Cloud Vision para detetar elementos além de conteúdo explícito.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.