関数のソースコードを Cloud Run にデプロイすると、そのソースは Cloud Storage バケットに保存されます。その後 Cloud Build はコードを自動的にビルドしてコンテナ イメージにし、そのイメージをイメージ レジストリに push します。各ビルドは独自のワーカー上で実行されます。Cloud Run は、関数を実行するためにコンテナを実行する必要がある場合に、このイメージにアクセスします。
Cloud Build が VPC Service Controls で保護されたビルド コンテキストに使用するビルドワーカー プールをカスタマイズする場合は、ワーカープールをカスタマイズします。このページは、Cloud Run に関数をデプロイし、Cloud Build で使用されるプライベート プールを構成するプラットフォーム デベロッパーを対象としています。
始める前に
Cloud Build API を有効にします。
gcloud services enable cloudbuild.googleapis.com
必要なロール
ソースからデプロイするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Run ソース デベロッパー(
roles/run.sourceDeveloper
) - サービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
プライベート プールでビルドを保護する
デフォルトでは、ビルドプロセス中に Cloud Build はインターネットに無制限にアクセスできます。VPC Service Controls(VPC SC)境界を設定し、ビルドのアクセスを境界内に保存された依存関係(npm パッケージなど)に制限する場合は、Cloud Build のプライベート ワーカープール機能を使用できます。
通常、次の手順でプライベート プールを設定します。
- プライベート ワーカープールを作成します。 プライベート プールの作成と管理をご覧ください。
VPC Service Controls の境界を構成します。VPC Service Controls の使用をご覧ください。
プライベート ワーカープールが Cloud Run 関数とは異なるプロジェクトにある場合、Cloud Run のサービス エージェント(
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
)に Cloud Build WorkerPool ユーザー(cloudbuild.workerPoolUser
)ロールを付与し、Cloud Build サービスがワーカープールにアクセスできるようにする必要があります。gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role roles/cloudbuild.workerPoolUser
次のように置き換えます。
- PROJECT_NUMBER は、関数が実行されるプロジェクト番号に置き換えます。
- PRIVATE_POOL_PROJECT_ID: ワーカープールが配置されているプロジェクトの ID。詳細については、プライベート プールでのビルドの実行をご覧ください。
関数をデプロイしてプライベート プールを使用します。
gcloud
ソースコードから関数をデプロイする際にビルドするプライベート プールを指定するには:
gcloud beta run deploy SERVICE \ --source . \ --function FUNCTION_ENTRY_POINT \ --build-worker-pool WORKER_POOL
次のように置き換えます。
- SERVICE: 関数の名前。
- FUNCTION_ENTRY_POINT: ソースコード内の関数のエントリ ポイント。
- WORKER_POOL: プライベート プールの名前。
ビルド ワーカープールを削除する
既存の関数のビルドワーカー プールを削除できます。
gcloud
関数の Cloud Build ワーカープールを消去するには:
gcloud beta run deploy SERVICE \ --source . \ --function FUNCTION_ENTRY_POINT \ --clear-build-worker-pool WORKER_POOL
次のように置き換えます。
- SERVICE: 関数の名前。
- FUNCTION_ENTRY_POINT: ソースコード内の関数のエントリ ポイント。
- WORKER_POOL: 削除するプライベート プールの名前。