Cloud Functions の関数をデプロイする(第 1 世代)

このガイドでは、ソースコードから Cloud Functions の関数をデプロイする方法について説明します。

デプロイ プロセスでは、ソースコードと構成設定を取得し、関数に対するリクエストを処理するために Cloud Functions で自動的に管理される実行可能なイメージをビルドします。

デプロイの基本

Cloud Functions の関数をデプロイするユーザーには、Cloud Functions デベロッパーの IAM ロールまたは同等の権限を含むロールが必要です。デプロイの追加構成もご覧ください。

該当するタブを選択して、gcloud CLI または Google Cloud コンソールを使用して関数をデプロイする手順を確認します。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. gcloud functions deploy コマンドを使用して、関数をデプロイします。

    gcloud functions deploy YOUR_FUNCTION_NAME \
    [--gen2] \
    --region=YOUR_REGION \
    --runtime=YOUR_RUNTIME \
    --source=YOUR_SOURCE_LOCATION \
    --entry-point=YOUR_CODE_ENTRYPOINT \
    TRIGGER_FLAGS
    

    1 つ目の引数 YOUR_FUNCTION_NAME は、デプロイされる関数の名前です。関数名は、先頭を文字にし、その後に 62 文字以内の文字、数字、ハイフン、アンダースコアを続けます。末尾は文字または数字にする必要があります。

    • --gen2 フラグは、Cloud Functions(第 2 世代)にデプロイすることを指定します。第 1 世代にデプロイする場合は、このフラグを省略します。

    • --region フラグには、関数をデプロイするリージョンを指定します。Cloud Functions でサポートされているリージョンについては、ロケーションをご覧ください。

    • --runtime フラグには、関数で使用される言語ランタイムを指定します。Cloud Functions は、複数のランタイムをサポートしています。詳細については、ランタイムをご覧ください。

    • --source フラグには、関数のソースコードの場所を指定します。詳しくは、以下のセクションをご覧ください。

    • --entry-point フラグには、ソースコード内の関数のエントリ ポイントを指定します。これは、関数の実行時に実行されるコードです。このフラグには、ソースコード内に存在する関数名または完全修飾クラス名を指定する必要があります。詳細については、関数のエントリ ポイントをご覧ください。

    • 関数のトリガーを指定する場合は、使用するトリガーに応じて、追加のフラグ(上記の TRIGGER_FLAGS)を使用する必要があります。

    トリガーフラグ トリガーの説明
    --trigger-http HTTP(S) リクエストで関数をトリガーします。詳しくは、HTTP トリガーをご覧ください。
    --trigger-topic=YOUR_PUBSUB_TOPIC 指定した Pub/Sub トピックにメッセージがパブリッシュされたときに関数をトリガーします。詳細については、Pub/Sub トリガーをご覧ください。
    --trigger-bucket=YOUR_STORAGE_BUCKET 指定された Cloud Storage バケットでオブジェクトの作成または上書きが行われたときに、この関数をトリガーします。詳細については、Cloud Storage トリガーをご覧ください。
    --trigger-event=EVENT_TYPE
    [--trigger-resource=RESOURCE]
    指定されたイベントが発生すると関数をトリガーします。一部のイベントタイプでは、リソースを指定する必要があります。詳細については、Cloud Functions(第 1 世代)でサポートされているトリガーをご覧ください。

    関数をデプロイするときに、追加の構成ネットワーキングセキュリティのオプションを指定することもできます。

    デプロイ コマンドとそのフラグの詳細については、gcloud functions deploy のドキュメントをご覧ください。

    デプロイ コマンドの例については、コマンドラインの例をご覧ください。

コンソール

  1. Google Cloud コンソールで Cloud Functions の概要ページに移動します。

    Cloud Functions に移動

    Cloud Functions の関数をデプロイする Google Cloud プロジェクトが選択されていることを確認します。

  2. [関数を作成] をクリックします。

  3. [環境] フィールドで [第 1 世代] を選択します。

  4. [関数名] フィールドに、関数の名前を入力します。関数名は、先頭を文字にし、その後に 62 文字以内の文字、数字、ハイフン、アンダースコアを続けます。末尾は文字または数字にする必要があります。

  5. [リージョン] フィールドで、関数をデプロイするリージョンを選択します。

  6. [トリガー] セクションで、選択した環境に基づいて次の操作を行います。

    1. HTTPS の [認証] セクションで、関数の未認証の呼び出しを許可するかどうかに応じて、適切なオプションを選択します。デフォルトでは認証が必要です。詳細については、呼び出しを認証するをご覧ください。
    2. [トリガーのタイプ] フィールドで、トリガーのタイプを選択します。詳細については、Cloud Functions(第 1 世代)でサポートされているトリガーをご覧ください。
    3. 選択したトリガータイプのその他のフィールドに入力します。
    4. [保存] をクリックします。
  7. 必要に応じて、ページの最後にある [ランタイム、ビルド、接続の設定] セクションを開いて、追加の構成セキュリティ オプションにアクセスします。

  8. [次へ] をクリックして、[コード] ステップに進みます。

  9. [ランタイム] フィールドで、関数が使用する言語ランタイムを選択します。Cloud Functions は、複数のランタイムをサポートしています。詳細については、ランタイムをご覧ください。

  10. [エントリ ポイント] フィールドに、ソースコード内の関数のエントリ ポイントを入力します。これは、関数の実行時に実行されるコードです。このフラグには、ソースコード内に存在する関数名または完全修飾クラス名を指定する必要があります。詳しくは、関数のエントリ ポイントご覧ください。

  11. [ソースコード] フィールドで、関数のソースコードの提供に適したオプションを選択します。詳しくは、以下のセクションをご覧ください。

  12. [デプロイ] をクリックします。

デプロイが正常に完了すると、Google Cloud コンソールの Cloud Functions の概要ページで関数に緑色のチェックマークが表示されます。

Cloud コンソールでデプロイされた関数

基盤となるインフラストラクチャがプロビジョニングされている間は、関数の最初のデプロイに数分かかることがあります。既存の関数の再デプロイは速くなります。受信トラフィックは自動的に最新バージョンに移行されます。

ローカルマシンからデプロイする

このセクションでは、ローカルマシンにあるソースコードから関数をデプロイする方法について説明します。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. gcloud functions deploy コマンドを使用して、上記のデプロイ手順を行います。

    --source フラグには、関数のソースコードのルート ディレクトリへのローカル ファイル システムのパスを指定します。ソース ディレクトリの構造をご覧ください。このフラグを省略すると、現在の作業ディレクトリが使用されます。

    また、--stage-bucket フラグを使用して、デプロイでソースコードをアップロードする Cloud Storage バケットを指定することもできます。

    ソースコードのアップロード中、Cloud Functions は .gcloudignore ファイルを使用して不要なファイルを除外します。

コンソール

  1. Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
  2. [ソースコード] フィールドで [ZIP アップロード] を選択します。
  3. [転送先バケット] フィールドで [参照] をクリックして、デプロイでソースコードをアップロードする Cloud Storage バケットを選択します。
  4. [ZIP ファイル] フィールドで [参照] をクリックして、ローカル ファイル システムからアップロードする ZIP ファイルを選択します。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
  5. [デプロイ] をクリックします。

Cloud Storage からデプロイする

このセクションでは、Cloud Storage バケットにあるソースコードから関数をデプロイする方法について説明します。ソースコードは ZIP ファイルとしてパッケージ化する必要があります。

Cloud Functions が Cloud Storage バケットからの読み取り行えるように、デプロイを実行するアカウントに storage.objects.get 権限を付与する必要があります。

バケットへのアクセスの制御については、Cloud Storage ドキュメントの IAM 権限の使用をご覧ください。

この権限により、Cloud Storage から関数をデプロイできます。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. gcloud functions deploy コマンドを使用して、上記のデプロイ手順を行います。

    --source フラグには、gs:// で始まる Cloud Storage パスを指定します。パス上のオブジェクトは、関数のソースコードを含む ZIP ファイルにする必要があります。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。

コンソール

  1. Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
  2. [ソースコード] フィールドで、[Cloud Storage の ZIP] を選択します。
  3. [Cloud Storage のロケーション] フィールドで、[参照] をクリックして Cloud Storage の ZIP ファイルを選択します。関数のソースファイルは ZIP ファイルのルートに置く必要があります。ソース ディレクトリの構造をご覧ください。
  4. [デプロイ] をクリックします。

Google Cloud コンソールのインライン エディタからデプロイする

このセクションでは、付属のインライン エディタを使用して Google Cloud コンソールから直接関数を作成し、デプロイする方法について説明します。

  1. Google Cloud コンソールで上記のデプロイ手順を行い、[ソースコード] フィールドに移動します。
  2. [ソースコード] フィールドで [インライン エディタ] を選択します。
  3. 付属のエディタを使用して、必要に応じてソースファイルを作成または編集します。ソース ディレクトリの構造をご覧ください。
    • 左側のペインにソースファイルが表示され、ファイルの作成、名前の変更、削除を行うことができます。
    • 右側のペインは、ファイルの内容を編集できるテキスト エディタです。
  4. [デプロイ] をクリックします。

コマンドラインの例

このセクションでは、いくつかのシナリオを例にしてデプロイ コマンドの使い方を説明します。

Cloud Functions でサポートされているさまざまなトリガーの詳細については、Cloud Functions のトリガーをご覧ください。

ローカルのソースコードから HTTP 関数をデプロイする

次のような HTTP 関数があるとします。

  • この関数は Node.js 20 を使用します。
  • ソースコードは現在の作業ディレクトリ(.)にあります。
  • コードのエントリ ポイントは myHttpFunction という名前です。

リージョン us-central1my-http-function という名前で関数を Cloud Functions の関数にデプロイするには、次のコマンドを使用します。

gcloud functions deploy my-http-function \
  --region=us-central1 \
  --runtime=nodejs20 \
  --source=. \
  --entry-point=myHttpFunction \
  --trigger-http

Cloud Storage のソースコードから Pub/Sub 関数をデプロイする

次のようなイベント ドリブン関数があるとします。

  • この関数は、Pub/Sub メッセージのパブリッシュ イベントを処理します。
  • この関数は Python 3.12 を使用します。
  • ソースコードは Cloud Storage のパス gs://my-bucket/my_function_source.zip にあります。
  • コードのエントリ ポイントは pubsub_handler という名前です。

リージョン europe-west1 内の my-pubsub-function という名前で関数を Cloud Functions にデプロイし、Pub/Sub トピック my-topic のメッセージで関数をトリガーするには、次のコマンドを使用します。

gcloud functions deploy my-pubsub-function \
  --region=europe-west1 \
  --runtime=python312 \
  --source=gs://my-bucket/my_function_source.zip \
  --entry-point=pubsub_handler \
  --trigger-topic=my-topic

ローカルのソースコードから Cloud Storage 関数をデプロイする

次のようなイベント ドリブン関数があるとします。

  • この関数は、Cloud Storage オブジェクトの削除イベントを処理します。
  • この関数は Java 17 を使用します。
  • ソースコードはローカルのパス ./functions/storage-function にあります。
  • コードのエントリ ポイントは myproject.StorageFunction という名前です。

リージョン asia-northeast1my-storage-function という名前で関数を Cloud Functions にデプロイし、Cloud Storage バケット my-bucket 内のイベントで関数をトリガーするには、次のコマンドを使用します。

gcloud functions deploy my-storage-function \
  --region=asia-northeast1 \
  --runtime=java17 \
  --source=./functions/storage-function \
  --entry-point=myproject.StorageFunction \
  --trigger-resource=gs://my-bucket \
  --trigger-event=google.storage.object.delete

次のステップ