VPC ネットワークへの接続

サーバーレス VPC アクセスを使用すると、Cloud Functions から VPC ネットワークに直接アクセスできます。これにより、Compute Engine VM インスタンス、Memorystore インスタンス、その他のリソースに内部 IP アドレスでアクセスできます。

サーバーレス VPC アクセスでは、Cloud VPNVPC ネットワーク ピアリングを介して接続された VPC ネットワークとの通信がサポートされています。サーバーレス VPC アクセスは、レガシー ネットワークまたは共有 VPC をサポートしていません。

VPC ネットワークへの接続

Cloud Functions を VPC ネットワークに接続するには、3 つのステップが必要です。

  1. サーバーレス VPC アクセス コネクタを作成する
  2. Cloud Functions サービス アカウントに適切な権限を付与する
  3. コネクタを使用するように関数を構成する

コネクタの作成

サーバーレス VPC アクセス コネクタは VPC ネットワークとの通信を処理します。コネクタは、それを使用する関数と同じプロジェクトとリージョンに配置する必要がありますが、異なるリージョンのリソースにトラフィックを送信できます。複数の関数が同じコネクタを使用できます。

サーバーレス VPC アクセス コネクタを作成する手順については、サーバーレス VPC アクセスの構成をご覧ください。

権限の設定

関数がサーバーレス VPC アクセス コネクタを使用するには、プロジェクトの Cloud Functions サービス アカウントに適切な権限が必要です。これらの権限をプロジェクトごとに 1 回だけ付与する必要があります。権限を設定する手順は次のとおりです。

Console

  1. Google Cloud Console の IAM ページに移動します。

    IAM に移動

  2. Cloud Functions サービス エージェントのエントリを見つけます。

  3. 鉛筆のアイコンをクリックして、権限を編集します。

  4. [別の役割を追加] をクリックします。

  5. [プロジェクト] > [閲覧者] を選択します。

  6. [別の役割を追加] をクリックします。

  7. [Compute Engine] > [Compute ネットワーク ユーザー] を選択します。

  8. [保存] をクリックします。

gcloud

  1. 次のコマンドを実行して、プロジェクト番号を確認します。PROJECT_ID は Cloud プロジェクト ID に置き換えてください。

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. Cloud Functions サービス エージェント(service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com)に viewer のロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/viewer
    

    PROJECT_NUM は、ステップ 1 で取得したプロジェクト番号です。

  3. Cloud Functions サービス エージェントに compute.networkUser のロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/compute.networkUser
    

コネクタを使用する関数を構成する

サーバーレス VPC アクセス コネクタを作成して適切な権限を設定したら、コネクタを使用するように関数を構成できます。

Console

  1. Cloud Console で Cloud Functions の概要ページに移動します。

    Cloud Functions に移動

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

  3. 関数の必須フィールドを入力します。

  4. [環境変数、ネットワーキング、タイムアウトなど] をクリックして詳細設定を表示します。

  5. [VPC コネクタ] フィールドで、コネクタの名前を選択または入力します。

  6. [作成] をクリックします。

gcloud

gcloud functions deploy コマンドを使用して関数をデプロイし、--vpc-connector フラグを指定します。

gcloud functions deploy FUNCTION_NAME \
--vpc-connector CONNECTOR_NAME \
FLAGS...

ここで

  • FUNCTION_NAME は、関数の名前です。
  • CONNECTOR_NAME は、コネクタの名前です。
  • FLAGS... は、関数のデプロイ時に渡す他のフラグです。

関数をデプロイすると、関数が内部 IP アドレスにリクエストを送信して、VPC ネットワーク内のリソースにアクセスできるようになります。

コネクタ経由のルーティング リクエストを細かく制御するには、下り(外向き)設定をご覧ください。

コネクタから関数を切り離す

関数が VPC ネットワークに接続する必要がなくなった場合は、サーバーレス VPC アクセス コネクタを切り離すことができます。

Console

  1. Cloud Console で Cloud Functions の概要ページに移動します。

    Cloud Functions に移動

  2. 既存の関数の名前をクリックして、その詳細ページに移動します。

  3. [編集] をクリックします。

  4. [環境変数、ネットワーキング、タイムアウトなど] をクリックして詳細設定を表示します。

  5. [VPC コネクタ] フィールドをクリアします。

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

gcloud

gcloud functions deploy コマンドを使用して関数を更新し、--clear-vpc-connector フラグを指定します。

gcloud functions deploy FUNCTION_NAME --clear-vpc-connector

次のステップ