Cloud Run functions の関数の依存関係は、Go モジュールまたは vendor ディレクトリを使用して指定できます。
Go モジュールで依存関係を指定する
Go モジュールで Cloud Run functions の依存関係を指定するには、go.mod ファイルに依存関係を記述します。関数をデプロイすると、Go により go.mod ファイルに依存関係が自動的に組み込まれます。
go.mod ファイルを作成するには、Go での依存関係の管理をご覧ください。
Functions Framework は、すべての関数に必須の依存関係です。Cloud Run functions は、関数の作成時にユーザーの代理でこの依存関係をインストールしますが、明確化のため明示的な依存関係として設定しておくことをおすすめします。
関数が非公開の依存関係に依存している場合は、functions-framework を非公開のレジストリにミラーリングすることをおすすめします。ミラーリング対象の functions-framework を依存関係として関数に含めることで、公共のインターネットからパッケージがインストールされないようにします。
vendor ディレクトリで依存関係を指定する
Cloud Run functions では、vendor ディレクトリを使用して依存関係を設定することもできます。vendor ディレクトリは、依存関係マネージャーを使用して依存関係を利用できない場合や、Cloud Run functions の環境のインターネット アクセスが制限されている場合に活用できます。
多くの場合、vendor ディレクトリは依存関係マネージャーを使用して管理します。依存関係マネージャーは、任意のものを使用できます。たとえば、Go のモジュール機能を使用して go.mod ファイルから vendor ディレクトリを作成できます。
Functions Framework for Go を vendor ディレクトリに含める必要があります。これを行うには、Go ツールチェーンを使用します。
Go コードのインポート ブロックに、次のディレクティブを追加します。
_ "github.com/GoogleCloudPlatform/functions-framework-go/funcframework"go.modファイルを更新して、新しくインポートされたパッケージを含めます。go mod tidygo.modファイルの内容を使用してvendorディレクトリを作成します。go mod vendor
1.16 より前の Go バージョン
バージョン 1.16 より前の Go で、go.mod ファイルと vendor ディレクトリがある場合は、関数のデプロイ時に vendor ディレクトリが無視されます。vendor ディレクトリを尊重するには、go.mod ファイルと go.sum ファイルのアップロードを回避するために、.gcloudignore ファイルを使用します。
プロジェクト ディレクトリのルートに次の内容の
.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 ディレクトリ間の競合を未然に防止してください。