Especificar dependências no Go

É possível especificar as dependências da função do Cloud com um módulo Go ou um diretório vendor.

Especificar dependências com módulos Go

Para especificar dependências das funções do Cloud Run com um módulo Go, liste-as em um arquivo go.mod. Quando você implanta a função, o Go incorpora automaticamente as dependências no arquivo go.mod.

Para criar um arquivo go.mod, consulte Como gerenciar dependências no Go.

O Functions Framework é uma dependência necessária para todas as funções. Embora as funções do Cloud Functions o instalem em seu nome quando a função é criada, recomendamos que você a inclua como uma dependência explícita para maior clareza.

Se a função depende de dependências particulares, recomendamos que você espelhe functions-framework no registro particular. Inclua o functions-framework espelhado como uma dependência da sua função para evitar a instalação do pacote pela Internet pública.

Especificar dependências com um diretório vendor

As funções do Cloud Run também permitem incluir dependências por meio de um diretório vendor. Usar um diretório de fornecedores é útil se a dependência não estiver disponível por meio de um gerenciador de dependências ou se o acesso à Internet do ambiente das funções do Cloud Run for restrito.

Na maioria das vezes, os diretórios vendor são mantidos com um gerenciador de dependências. É possível usar qualquer gerenciador de dependências que você preferir. Por exemplo, você pode usar a funcionalidade dos módulos do Go para criar um diretório vendor a partir do arquivo go.mod.

Você precisa incluir o Functions Framework para Go no diretório de fornecedores. Para usar o conjunto de ferramentas Go, faça o seguinte:

  1. Adicione a seguinte diretiva ao bloco de importação do seu código Go:

    _ "github.com/GoogleCloudPlatform/functions-framework-go/funcframework"
    
  2. Atualize o arquivo go.mod para incluir o novo pacote importado:

    go mod tidy
    
  3. Crie um diretório vendor usando o conteúdo do arquivo go.mod:

    go mod vendor
    

Versões do Go anteriores à 1.16

Para versões do Go anteriores à 1.16, se você tiver um arquivo go.mod e um diretório vendor, o diretório vendor será ignorado quando você implantar a função. Para garantir que o diretório de fornecedores seja respeitado, use um arquivo .gcloudignore e evite fazer upload dos arquivos go.mod e go.sum:

  1. Crie um arquivo .gcloudignore na raiz do diretório do projeto com o seguinte conteúdo:

    go.mod
    go.sum
    
    # Also ignore Git directories. Delete the following two lines if you want to
    # upload them.
    .git
    .gitignore
    

Como usar dependências privadas

Se as dependências da função estiverem hospedadas em um repositório que não é acessível publicamente, use um diretório vendor para buscar as dependências antes de implantar a função. Se você pretende usar um arquivo go.mod, consulte as instruções acima para evitar conflitos entre o arquivo go.mod e o diretório vendor.