Esta página descreve como implantar e modificar funções no Cloud Run. Para conferir um exemplo de como implantar uma função Hello World, consulte Implantar uma função de exemplo.
Nos bastidores, as implantações de função do Cloud Run usam os buildpacks do Google Cloud e o Cloud Build para criar automaticamente imagens de contêiner do código-fonte da função sem ter que instalar o Docker na máquina ou configurar os buildpacks ou o Cloud Build.
As implantações de funções do Cloud Run também usam o Artifact Registry para armazenar artefatos
e gerenciar imagens de contêineres. O Artifact Registry cria o Artifact Registry automaticamente
repositório cloud-run-source-deploy
caso seu projeto ainda não tenha criado um
com este nome.
Antes de começar
Verifique se você configurou um novo projeto para o Cloud Run conforme descrito na página de configuração.
Ative o Artifact Registry, o Cloud Build, a API Cloud Run Admin e as APIs Cloud Logging:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ logging.googleapis.com
Se quiser, ative a API Eventarc para usar gatilhos de eventos:
gcloud services enable eventarc.googleapis.com
Se você precisa seguir uma política da organização de restrição de domínio que restringe invocações não autenticadas para seu projeto, será necessário acessar o serviço implantado, conforme descrito em Como testar serviços particulares.
Funções exigidas
Você ou seu administrador precisa conceder à conta do implantador e à conta de serviço os seguintes papéis do IAM.
Clique para conferir os papéis necessários para a conta do implantador
Para receber as permissões necessárias para criar e implantar a partir da origem, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto - Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade de serviço do Cloud Run
Clique para conferir os papéis necessários para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a
conta de serviço padrão do Compute Engine como a conta de serviço padrão do Cloud Build para criar o código-fonte e
o recurso do Cloud Run, a menos que você substitua esse comportamento. Para que o Cloud Build crie suas origens, peça ao administrador para conceder o Cloud Run Builder (roles/run.builder
) à conta de serviço padrão do Compute Engine no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Substitua PROJECT_NUMBER
pelo número do projeto Google Cloude PROJECT_ID
pelo ID do projeto Google Cloud. Para instruções detalhadas sobre como encontrar o ID e o número do projeto,
consulte Criar
e gerenciar projetos.
A concessão do papel de builder do Cloud Run à conta de serviço padrão do Compute Engine leva alguns minutos para se propagar.
Clique para conferir os papéis necessários para a conta de serviço se estiver usando o Eventarc
Opcionalmente, se você estiver usando o Eventarc, conceda os seguintes papéis à conta de serviço:
- Editor do Cloud Build (
roles/cloudbuild.builds.editor
) - Administrador do Cloud Run (
roles/run.admin
) - Criar contas de serviço (
roles/iam.serviceAccountCreator
) - Chamador do Cloud Run (
roles/run.invoker
) - Administrador do Eventarc (
roles/eventarc.admin
) - Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin
) - Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer
) - Administrador do Storage (
roles/storage.admin
)
Para mais informações sobre como conceder papéis específicos aos gatilhos do Eventarc, consulte Papéis e permissões para destinos do Cloud Run.
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interagir com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Criar e implantar uma função
É possível implantar uma função usando o console do Google Cloud ou a gcloud CLI. Clique na guia para ver instruções usando a ferramenta de sua preferência.
Console
No console do Google Cloud, acesse a página do Cloud Run:
Clique em Escrever uma função.
No campo Nome do serviço, insira um nome para descrever a função. Os nomes de serviço precisam começar com uma letra e conter até 49 caracteres, incluindo letras, números ou hifens. Os nomes de serviço não podem terminar com hifens e precisam ser exclusivos por região e projeto. Não é possível alterar o nome de um serviço depois e ele fica visível publicamente.
Na lista Região, use o valor padrão ou selecione a região em que você quer implantar a função.
Na lista Ambiente de execução, use o valor padrão ou selecione uma versão do ambiente de execução.
Opcionalmente, na seção Gatilho, clique em Adicionar gatilho e selecione uma opção. O painel Gatilho do Eventarc é aberto. Nele, é possível modificar o detalhes a seguir para o gatilho:
No campo Nome do gatilho, digite um nome ou use o nome padrão.
Selecione um Tipo de acionador na lista para especificar um dos seguintes tipos de acionador:
Fontes do Google para especificar acionadores para Pub/Sub, Cloud Storage, Firestore, e outros provedores de eventos do Google.
Personalizado para produzir e consumir eventos do no código do aplicativo. Siga as instruções no painel Gatilho do Eventarc para criar um canal. Um canal é um recurso usado como pipeline para entregar eventos personalizados de produtores a consumidores. Eventos personalizados são publicados em um canal, e um gatilho do Eventarc se inscreve nesses eventos.
Terceiros para integração com provedores que não são do Google que oferecem uma origem do Eventarc. Para mais informações, consulte Eventos de terceiros no Eventarc.
Selecione um Provedor de eventos na lista para selecionar um produto que ofereça o tipo de evento para acionar sua função. Para ver a lista de provedores de eventos, consulte Provedores e destinos de eventos.
Selecione um Tipo de evento na lista. A configuração do gatilho varia de acordo com o tipo de evento compatível: Para mais informações, consulte Tipos de eventos.
No campo Região, selecione um local. para o Eventarc gatilho. Em geral, o local de um acionador do Eventarc precisa corresponder ao local do recurso Google Cloud que você quer monitorar para eventos. Na maioria dos cenários, você também precisa implantar a função na mesma região. Consulte Noções básicas sobre locais do Eventarc para mais detalhes sobre locais de acionador do Eventarc.
No campo Conta de serviço, selecione uma conta de serviço. Os acionadores do Eventarc são vinculados a contas de serviço para usar como uma identidade ao invocar a função. A conta de serviço do acionador do Eventarc precisa ter permissão para invocar a função. Por padrão, o Cloud Run usa a conta de serviço padrão do Compute Engine.
Se quiser, especifique o caminho do URL do serviço para enviar a solicitação recebida. Esse é o caminho relativo no serviço de destino para o qual os eventos do gatilho precisam ser enviados. Por exemplo:
/
,/route
,route
eroute/subroute
.Depois de preencher os campos obrigatórios, clique em Salvar gatilho.
Em Autenticação, configure o seguinte:
Se você estiver criando uma função HTTP pública, por exemplo, um webhook, selecione Permitir invocações não autenticadas. A seleção atribui o papel de chamador do IAM ao identificador especial
allUser
. É possível usar o IAM para editar essa configuração depois de criar o serviço. Se você não tiver permissões (função de administrador do Cloud Run) para selecionar essa opção, o serviço será implantado e exigirá autenticação.Se você estiver criando uma função acionada por evento, selecione Exigir autenticação.
Se preferir, atualize as seguintes configurações adicionais para suas funções:
Defina Faturamento conforme necessário.
Em Escalonamento automático do serviço, especifique as instâncias mínimas conforme necessário.
Defina as configurações de Controle de entrada conforme necessário.
Expanda a seção Contêineres, volumes, rede, segurança para definir outras configurações opcionais nas guias apropriadas:
Clique em Criar e aguarde o Cloud Run criar o serviço usando uma revisão do marcador de posição.
O console vai redirecionar você para a guia Origem, em que você pode ver o código-fonte da sua função. Clique em Salvar e implantar novamente.
Na guia Origem, clique em Mostrar payload para conferir um exemplo de payload de eventos recebidos.
Após a implantação, teste a função criada clicando no botão Testar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Atualize os componentes
gcloud
para a versão mais recente:gcloud components update
Execute o seguinte comando no diretório que contém o código de amostra:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION
Substitua:
FUNCTION pelo nome da função que você está implantando. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome, se você omiti-lo.
FUNCTION_ENTRYPOINT: o ponto de entrada da função no código-fonte. Esse é o código que o Cloud Run executa quando é executada. O valor dessa sinalização precisa ser um nome de função ou de classe totalmente qualificada no código-fonte.
BASE_IMAGE com o ambiente de imagem base da sua função. Para mais detalhes sobre as imagens de base e os pacotes incluídos em cada imagem, consulte Imagens de base dos ambientes de execução.
REGION pela região do Google Cloudem que você quer implantar a função. Por exemplo,
us-central1
.
Opcional:
- Se você estiver criando uma função HTTP pública, por exemplo, um webhook,
especifique a flag
--allow-unauthenticated
. Essa flag atribui o papel de invocador do IAM do Cloud Run ao identificador especialallUser
. É possível usar o IAM para editar essa configuração depois de criar o serviço. Se você está criando uma função acionada por evento ou serviço autenticado, é possível omitir essa flag.
Opcionalmente, depois de implantar a função, você pode adicionar acionadores do Eventarc a ela. Para adicionar um gatilho, execute o seguinte comando:
gcloud eventarc triggers create EVENTARC_TRIGGER_NAME \
--location=EVENTARC_TRIGGER_LOCATION \
--destination-run-service=FUNCTION \
--destination-run-region=REGION \
--event-filters="type=EVENTARC_FILTER_TYPE" \
--event-filters="EVENTARC_EVENT_FILTER" \
--service-account=EVENTARC_TRIGGER_SERVICE_ACCOUNT
Substitua:
EVENTARC_TRIGGER_NAME com o nome do gatilho Eventarc.
EVENTARC_TRIGGER_LOCATION pelo local do Gatilho do Eventarc. Em geral, o local de um acionador do Eventarc precisa corresponder ao local do recurso Google Cloud que você quer monitorar para eventos. Na maioria dos cenários, você também precisa implantar a função na mesma região. Consulte Noções básicas sobre locais do Eventarc para mais detalhes sobre locais de acionador do Eventarc.
FUNCTION pelo nome da função implantada.
REGION pela região do Cloud Run da função.
EVENTARC_FILTER_TYPE pelos filtros de evento que o acionador e monitores. Um evento que corresponde a todos os filtros de
--event-filters
aciona chamadas para sua função. Cada gatilho precisa ter um tipo de evento compatível no formato--event-filters="type=EVENTARC_FILTER_TYPE"
. Não é possível alterar esse tipo de evento após a criação. Para mudarEVENT_FILTER_TYPE
, crie um novo gatilho e exclua o antigo. Opcional: é possível repetir a flag--event-filters
com um filtro compatível no formatoATTRIBUTE=VALUE
para adicionar mais filtros.EVENTARC_TRIGGER_SERVICE_ACCOUNT com uma conta de serviço Os acionadores do Eventarc são vinculados a contas de serviço para usar como uma identidade ao invocar a função. A conta de serviço do acionador do Eventarc precisa ter permissão para invocar a função. Por padrão, o Cloud Run usa a conta de serviço padrão do Compute.
Terraform
Para gerenciar funções usando o Terraform,
crie o código da função em uma imagem de contêiner e defina o
serviço do Cloud Run em uma configuração do Terraform usando o recurso
google_cloud_run_v2_service
do Provedor do Google Cloud Platform.
Siga as instruções para criar uma função do zero para criar uma imagem de contêiner compatível com atualizações automáticas de segurança. Copie o caminho completo da imagem do contêiner para a variável IMAGE_URL usada na próxima etapa.
Crie um novo arquivo
main.tf
com este conteúdo:provider "google" { project = "PROJECT-ID" } resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" client = "terraform" template { containers { name = "SERVICE" image = "IMAGE_URL" base_image_uri = "BASE_IMAGE" } } } build_config{ function_target = "FUNCTION_TARGET" image_uri = "IMAGE_URL" base_image = "BASE_IMAGE" enable_automatic_updates = true } resource "google_cloud_run_v2_service_iam_member" "noauth" { location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "allUsers" }
Substitua:
- PROJECT-ID pelo ID do projeto Google Cloud .
- REGION pela região Google Cloud .
- SERVICE pelo nome do serviço do Cloud Run; Os nomes dos serviços precisam ter 49 caracteres ou menos e ser exclusivos por região e projeto.
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- BASE_IMAGE por uma referência à imagem base, por exemplo,
us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22:public-image-current
. Consulte imagens de base do ambiente de execução para conferir a lista de ambientes de execução de suporte e as respectivas imagens de base. - FUNCTION_TARGET com o nome da função que você quer usar como ponto de entrada.
Essa configuração permite acesso público (o equivalente a
--allow-unauthenticated
). Para tornar o serviço privado, remova a estrofegoogle_cloud_run_v2_service_iam_member
.Inicialize o Terraform:
terraform init
Aplique a configuração do Terraform:
terraform apply
Confirme que você quer aplicar as ações descritas digitando
yes
.
Locais do Cloud Run
O Cloud Run é regional, o que significa que a infraestrutura que executa seus serviços do Cloud Run está localizada em uma região específica e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas da região.
Atender aos seus requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região em que seus serviços do Cloud Run são executados.
Geralmente, é possível selecionar a região mais próxima de seus usuários, mas considere
a localização dos outros produtos Google Cloud usados pelo serviço do Cloud Run.
O uso de Google Cloud produtos em vários locais pode afetar
a latência e o custo do serviço.
O Cloud Run está disponível nas regiões a seguir:
Sujeitas aos preços do nível 1
asia-east1
(Taiwan)asia-northeast1
(Tóquio)asia-northeast2
(Osaka)asia-south1
(Mumbai, Índia)europe-north1
(Finlândia)Baixo CO2
europe-southwest1
(Madri)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
(Tel Aviv)us-central1
(Iowa)Baixo CO2
us-east1
(Carolina do Sul)us-east4
(Norte da Virgínia)us-east5
(Columbus)us-south1
(Dallas)Baixo CO2
us-west1
(Oregon)Baixo CO2
Sujeitas aos preços do nível 2
africa-south1
(Johannesburgo)asia-east2
(Hong Kong)asia-northeast3
(Seul, Coreia do Sul)asia-southeast1
(Singapura)asia-southeast2
(Jacarta)asia-south2
(Déli, Índia)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Varsóvia, Polônia)europe-west10
(Berlim)Baixo CO2
europe-west12
(Turim)europe-west2
(Londres, Reino Unido)Baixo CO2
europe-west3
(Frankfurt, Alemanha)Baixo CO2
europe-west6
(Zurique, Suíça)Baixo CO2
me-central1
(Doha)me-central2
(Damã)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 você já criou um serviço do Cloud Run, é possível visualizar a região no painel do Cloud Run no console do Google Cloud.
Ativar novas tentativas do evento
O Eventarc usa o Pub/Sub como camada de transporte e tem uma política de nova tentativa padrão que pode não funcionar bem para sua função.
Depois de criar um gatilho do Eventarc, é altamente atualizando a política de nova tentativa Eventarc e configuração tópico de mensagens inativas no Pub/Sub
Especificar um repositório de imagens
As implantações de funções do Cloud Run usam o Artifact Registry para armazenar artefatos
e gerenciar imagens de contêineres. O Artifact Registry cria o repositório REGION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy
automaticamente se o projeto ainda não tiver criado um com esse nome.
Para especificar um repositório do Artifact Registry criado por você, use este comando:
gcloud
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --image IMAGE_URL
Substitua:
FUNCTION pelo nome da função que você está implantando. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome, se você omiti-lo.
FUNCTION_ENTRYPOINT: o ponto de entrada da função no código-fonte. Esse é o código que o Cloud Run executa quando é executada. O valor dessa sinalização precisa ser um nome de função ou de classe totalmente qualificada no código-fonte.
BASE_IMAGE com o ambiente de imagem base da sua função. Para mais detalhes sobre as imagens de base e os pacotes incluídos em cada imagem, consulte Imagens de base dos ambientes de execução.
REGION pela região do Google Cloudem que você quer implantar a função. Por exemplo,
us-central1
.IMAGE_URL com uma referência ao caminho da imagem usando o repositório de imagens do Artifact Registry de sua escolha, por exemplo,
projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY_NAME/FUNCTION
. O nome da imagem precisa ser igual ao da função que você quer criar. Se apenas o caminho do repositório for fornecido, a imagem será criada usando o nome da função FUNCTiON.
Ao especificar um repositório do Artifact Registry localizado em um projeto ou região diferente, considere o seguinte:
Configurações do IAM:
- Verifique se você configurou as permissões do IAM para implantar imagens de outros projetos Google Cloud .
- Além disso, verifique se a conta de serviço de build tem acesso autorizado para ler e gravar no REPOSITORY.
Configurações de rede
- Verifique se o REPOSITORY de destino pode ser acessado na configuração atual do projeto.
Configurações do VPC Service Controls:
- Verifique se a conta de serviço do build pode alcançar o REPOSITORY de destino no perímetro do VPC-SC.
Restrições de residência de dados:
- Especificar um REPOSITORY em uma região diferente daquela em que a função está localizada vai levar à transferência de dados entre regiões.
Modificar uma função
É possível modificar a configuração ou o código da função:
Modificar configuração
Para modificar parâmetros de configuração, como opções de faturamento, memória e conectividade da VPC, siga as instruções na guia apropriada:
Console
No console do Google Cloud, acesse a página do Cloud Run:
Localize o serviço que você quer atualizar na lista de serviços e clique nele para abrir os detalhes.
Clique em Editar e implantar nova revisão para exibir o formulário de implantação da revisão.
Modifique qualquer definição de configuração.
Clique em Implantar e aguarde a conclusão da implantação.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para atualizar uma ou mais configurações de serviço, use o comando
gcloud beta run services update SERVICE
com as flags de linha de comando da configuração que você quer atualizar. Substitua SERVICE pelo nome do serviço.
Implantar novamente o novo código-fonte
É possível modificar a imagem base, o ambiente de execução e o código-fonte da função usando o console do Google Cloud ou a CLI gcloud.
Clique na guia para ver instruções usando a ferramenta de sua preferência.
Console
No console do Google Cloud, acesse a página do Cloud Run:
Localize a função que você quer atualizar na lista de serviços e clique nele para abrir os detalhes dessa função.
Navegue até a guia Origem e clique em Editar origem.
Clique em
Editar atualizações de ambiente de execução e segurança ao lado de Imagem base, selecione um Ambiente de execução ou Ambiente diferente da lista conforme necessário e clique em Salvar.Modifique o Ponto de entrada da função conforme necessário.
Na seção Arquivos, selecione
Adicionar arquivo para criar um novo arquivo. Renomear arquivo para renomear um arquivo. ou Excluir arquivo para excluir um arquivo.Na seção Código, modifique seu código-fonte conforme necessário.
Clique em Salvar e reimplantar e aguarde a conclusão da implantação.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Execute o seguinte comando no diretório que contém o código-fonte da função:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION
Substitua:
FUNCTION pelo nome da função que você quer modificar.
FUNCTION_ENTRYPOINT: pelo ponto de entrada para sua função no código-fonte.
BASE_IMAGE com o ambiente de imagem base da sua função. Na maioria dos casos, é possível especificar o ID do ambiente de execução, por exemplo,
nodejs22
:Como alternativa, se quiser usar um pacote de sistema específico na pilha ou especificar a região de onde é feito o download da imagem base, você pode especificar uma das seguintes opções:
- O caminho completo da imagem de base, como
us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22
. Essa opção permite especificar a imagem de base, um pacote de sistema específico na pilha e a região de origem do download da imagem de base. - O alias do caminho completo da imagem de base, como
google-22/nodejs22
ougoogle-22-full/nodejs22
. Essa opção de alias mais curta permite especificar a imagem de base e um pacote de sistema específico na pilha.
Para mais detalhes sobre imagens de base e os pacotes incluídos em cada imagem, consulte Imagens de base do ambiente de execução.
- O caminho completo da imagem de base, como
REGION pela região do Google Cloudem que você quer implantar a função. Por exemplo,
us-central1
.
Sinalizações opcionais
É possível configurar as seguintes sinalizações opcionais ao modificar sua função:
Flags Build environment variables para especificar variáveis de ambiente durante a etapa de build, como para configurar certificados específicos no momento do build ou parâmetros.
Sinalizações do pool de workers para especificar qual pool de workers usar no VPC Service Controls um contexto de build protegido.
Contas de serviço de build personalizadas para especificar uma alternativa conta de serviço de build padrão para aumentar a segurança.
Flag Atualizações automáticas de imagem de base para desativar as atualizações automáticas. Por padrão, as funções têm com atualizações de segurança ativadas.
A seguir
Depois de implantar uma nova função, é possível realizar estas ações:
- Conferir ou excluir funções
- Gerenciar serviços
- Ver registros
- Crie contêineres de função na sua própria toolchain e implante no Cloud Run
- Acionar com eventos
- Acionar funções do Cloud Storage usando Eventarc