このガイドでは、他の Google Cloud サービスが Cloud Run 関数のデプロイ プロセスにどのように関与しているかについて、概要を説明します。
始める前に
Cloud Run のデプロイ オプションとリソースモデル ガイドで、Cloud Run functions とソースのデプロイのコンセプトを学習します。
アーキテクチャの概要
関数のソースコードを Cloud Run functions にデプロイすると、そのソースコードは Cloud Storage バケットに保存されます。その後、Cloud Build はコードを自動的にビルドしてコンテナ イメージにし、そのイメージを Artifact Registry イメージ レジストリに push します。Cloud Run functions は、関数を実行するためにコンテナを実行する必要がある場合に、このイメージにアクセスします。
次の図の Cloud Run functions ボックスは、Cloud Run Admin API または Cloud Functions API を使用して Cloud Run にデプロイされた関数を表しています。通常、新しい関数は Cloud Run Admin API を使用してデプロイされ、古い関数は Cloud Functions API を使用してデプロイされます。
関数のデプロイ時に使用される API に応じて、次のように処理されます。
Cloud Run Admin API を使用して関数をデプロイした場合は、次のようになります。
ソースコードは、保持期間のない Cloud Storage バケットにアップロードされます。
- デフォルトの暗号化を使用している場合、バケットの名前は自動生成され、
run-sources-PROJECT_ID-REGION
という名前になります。 - 顧客管理の暗号鍵(CMEK)でデータを保護している場合、バケット名は自動生成されません。バケット名を指定する必要があります。
- デフォルトの暗号化を使用している場合、バケットの名前は自動生成され、
ソースコードは Cloud Build に送信され、Google Cloud の Buildpack と Functions Framework によってコンテナ イメージが作成されます。Cloud Build サービス アカウントがコンテナ イメージをビルドします。
コンテナ イメージは、
REGION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy
という自動作成バケットを介して Artifact Registry にアップロードされます。イメージはサービスとして Cloud Run にデプロイされます。
Eventarc、Pub/Sub、またはその他の HTTP トリガーを使用して関数をトリガーまたは呼び出すことができます。
Cloud Functions API(v2)を使用して関数をデプロイした場合は、次のようになります。
ソースコードは、保持期間のない Cloud Storage バケットにアップロードされます。
バケットの名前は自動生成され、次の形式になります。
- デフォルトの暗号化を使用している場合、このバケットの名前は
gcf-v2-sources-PROJECT_NUMBER-REGION
です。 - CMEK でデータを保護している場合、バケットの名前は
gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH
です。
- デフォルトの暗号化を使用している場合、このバケットの名前は
ソースコードは Cloud Build に送信され、Google Cloud の Buildpack と Functions Framework によってコンテナ イメージが作成されます。Cloud Build サービス アカウントがコンテナ イメージをビルドします。
コンテナ イメージは、
REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts
という自動作成バケットを介して Artifact Registry にアップロードされます。イメージはサービスとして Cloud Run にデプロイされます。
Eventarc、Pub/Sub、またはその他の HTTP トリガーを使用して関数をトリガーまたは呼び出すことができます。
次のステップ
- さまざまなタイプの関数と、関数をトリガーするオプションについて学習する。
- 以前に Cloud Functions API を使用して関数を作成した場合は、Cloud Run functions の比較ガイドで、2 つのバージョンの Cloud Run functions の違いを確認してください。