Go で依存関係を指定する
Cloud Run 関数の依存関係は、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 関数の環境のインターネット アクセスが制限されている場合に役立ちます。
多くの場合、vendor
ディレクトリは依存関係マネージャーを使用して管理します。依存関係マネージャーは、任意のものを使用できます。たとえば、Go のモジュール機能を使用して go.mod
ファイルから vendor
ディレクトリを作成できます。
Functions Framework for Go を vendor ディレクトリに含める必要があります。これを行うには、Go ツールチェーンを使用します。
Go コードのインポート ブロックに、次のディレクティブを追加します。
_ "github.com/GoogleCloudPlatform/functions-framework-go/funcframework"
go.mod
ファイルを更新して、新しくインポートされたパッケージを含めます。go mod tidy
go.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
ディレクトリの間の競合を未然に防いでください。