Go での依存関係を指定する

Cloud Functions の関数の依存関係は Go モジュールまたは vendor ディレクトリを使用して指定できます。

Go モジュールで依存関係を指定する

Go モジュールで Cloud Functions の関数の依存関係を指定するには、go.mod ファイルに依存関係を記述します。関数をデプロイすると、Go により go.mod ファイルに依存関係が自動的に組み込まれます。

go.mod ファイルを作成するには、Go での依存関係の管理をご覧ください。

Functions Framework は、すべての関数に必須の依存関係です。Cloud Functions は、関数の作成時にユーザーの代理でこの依存関係をインストールしますが、明確化のため明示的な依存関係として含めておくことをおすすめします。

関数がプライベート依存関係を利用している場合は、functions-framework をプライベート レジストリにミラーリングすることをおすすめします。ミラーリング対象の functions-framework を依存関係として関数に含めることで、公共のインターネットからパッケージがインストールされないようにします。

vendor ディレクトリで依存関係を指定する

Cloud Functions では、vendor ディレクトリを介して依存関係を含めることもできます。vendor ディレクトリは、依存関係マネージャーを使用して依存関係を利用できない場合や、Cloud Functions 環境のインターネット アクセスが制限されている場合に役立ちます。

多くの場合、vendor ディレクトリは依存関係マネージャーを使用して管理します。依存関係マネージャーは、任意のものを使用できます。たとえば、Go のモジュール機能を使用して go.mod ファイルから vendor ディレクトリを作成できます。

Functions Framework for Go を vendor ディレクトリに含める必要があります。これを行うには、Go ツールチェーンを使用します。

  1. Go コードのインポート ブロックに、次のディレクティブを追加します。

    _ "github.com/GoogleCloudPlatform/functions-framework-go/funcframework"
    
  2. go.mod ファイルを更新して、新しくインポートされたパッケージを含めます。

    go mod tidy
    
  3. go.mod ファイルの内容を使用して vendor ディレクトリを作成します。

    go mod vendor
    

1.16 より前の Go バージョン

バージョン 1.16 より前の Go で、go.mod ファイルと vendor ディレクトリがある場合は、関数のデプロイ時に vendor ディレクトリが無視されます。vendor ディレクトリを尊重するには、go.mod ファイルと go.sum ファイルのアップロードを回避するために、.gcloudignore ファイルを使用します。

  1. プロジェクト ディレクトリのルートに次の内容の .gcloudignore ファイルを作成します。

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

プライベート依存関係を使用する

関数の依存関係が一般公開されていないリポジトリでホストされる場合、その関数をデプロイする前に、vendor ディレクトリを使用して依存関係を取得する必要があります。go.mod ファイルを使用する場合は、上記の手順を参照して、go.mod ファイルと vendor ディレクトリの間の競合を未然に防いでください。