VPC ネットワークに接続する
このページでは、サーバーレス VPC アクセスを使用して、Cloud Functions を VPC ネットワークに直接接続し、Compute Engine VM インスタンス、Memorystore インスタンス、内部 IP アドレスを持つその他のリソースへのアクセスを可能にする方法について説明します。
始める前に
プロジェクトに VPC ネットワークがない場合は作成します。
共有 VPC を使用��る場合は、コネクタへのアクセス権を提供し、共有 VPC ネットワークへの接続をご覧ください。
Google Cloud コンソールで、プロジェクトのサーバーレス VPC アクセス API が有効になっていることを確認します。
サーバーレス VPC アクセス コネクタを作成する
公共のインターネットを使用せずに VPC ネットワークにリクエストを送信して対応するレスポンスを受信する場合は、サーバーレス VPC アクセス コネクタを使用できます。
コネクタがその VPC ネットワークと同じプロジェクトに配置されている場合、既存のサブネットを使用してコネクタを作成するか、コネクタと新しいサブネットを作成することができます。
コネクタがサービス プロジェクトに配置されていて、共有 VPC ネットワークを使用している場合、コネクタとそれに関連付けられた VPC ネットワークは異なるプロジェクト内にあります。コネクタとその VPC ネットワークが異なるプロジェクトにある場合は、��ネクタを作成する前に、共有 VPC ネットワーク管理者が共有 VPC ネットワークにコネクタのサブネットを作成する必要があります。さらに、既存のサブネットを使用してコネクタを作成することが求められます。
サブネットの要件の詳細については、コネクタのサブネットの要件をご覧ください。
マシンタイプやスケーリングなど、コネクタのスループットの詳細については、スループットとスケーリングをご覧ください。
コネクタは、Google Cloud コンソール、Google Cloud CLI、または Terraform を使用して作成できます。
コンソール
サーバーレス VPC アクセスの概要ページに移動します。
[コネクタを作成] をクリックします。
[名前] フィールドに、Compute Engine の命名規則に沿ってコネクタの名前を入力します。ただし、名前の長さは 21 文字未満とし、ハイフン(-)は 2 文字としてカウントする必要があります。
[リージョン] フィールドで、コネクタのリージョンを選択します。これは、サーバーレス サービスのリージョンと一致する必要があります。
サービスまたはジョブが
us-central
またはeurope-west
リージョンにある場合は、us-central1
またはeurope-west1
を使用します。[ネットワーク] フィールドで、コネクタを接続する VPC ネットワークを選択します。
[サブネット] フィールドで、次のいずれかのオプションを選択します。
既存のサブネットを使用してコネクタを作成する: [サブネット] フィールドで既存のサブネットを選択します。
コネクタと新しいサブネットを作成する: [サブネット] フィールドで [カスタム IP 範囲] を選択します。次に、未使用の
/28
CIDR(10.8.0.0/28
など)の最初のアドレスを入力します。これは、Google Cloud でコネクタの VPC ネットワークに作成する新しいサブネットのプライマリ IPv4 アドレス範囲として使用します。指定した IP 範囲が、コネクタの VPC ネットワークにす�����存�����る���ー��と競合しないようにしてください。新しいサブネットの名前は aet- という接頭辞で始まります。
(省略可)コネクタを詳細に制御するためのスケーリング オプションを設定するには、[スケーリング設定を表示] をクリックしてスケーリング フォームを表示します。
- コネクタのインスタンスの最小数と最大数を設定するか、デフォルト値(最小 2、最大 10)を使用します。コネクタは、トラフィックの使用量に応じて指定された最大値にスケールアップしますが、トラフィックが減少してもスケールダウンしません。
2
~10
の範囲の値を使用する必要があります。 - [インスタンス タイプ] メニューで、コネクタに使用するマシンタイプを選択するか、デフォルトの
e2-micro
を使用します。インスタンス タイプを選択すると、右側にコスト サイドバーが表示され、帯域幅とコストの見積もりが表示されます。
- コネクタのインスタンスの最小数と最大数を設定するか、デフォルト値(最小 2、最大 10)を使用します。コネクタは、トラフィックの使用量に応じて指定された最大値にスケールアップしますが、トラフィックが減少してもスケールダウンしません。
[作成] をクリックします。
コネクタの使用準備が整うと、コネクタ名の横に緑色のチェックマークが表示されます。
gcloud
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
gcloud
コンポーネントを最新バージョンに更新します。gcloud components update
プロジェクトで Serverless VPC Access API が有効になっていることを確認します。
gcloud services enable vpcaccess.googleapis.com
次のいずれかのオプションを使用してコネクタを作成します。
より詳しい情報とオプションの引数については、
gcloud
のリファレンスをご覧ください。既存のサブネットを使用してコネクタを作成する:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
次のように置き換えます。
CONNECTOR_NAME
: Compute Engine の命名規則に一致するコネクタの名前。ただし、名前の長さは 21 文字未満とし、ハイフン(-)は 2 文字としてカウントする必要があります。REGION
: サーバーレス サービスまたはジョブのリージョンと一致しているコネクタのリージョン。サービスまたはジョブがus-central
またはeurope-west
にある場合は、us-central1
またはeurope-west1
を使用します。SUBNET_NAME
: 既存のサブネットの名前。HOST_PROJECT_ID
: 共有 VPC ホスト プロジェクト ID。コネクタと既存のサブネットが同じプロジェクトに配置されている場合は、--subnet-project
フラグを省略します。MIN
: コネクタに使用するインスタンスの最小数。2
(デフォルト)~9
の範囲の整数を使用します。MAX
: コネクタに使用するインスタンスの最大数。3
~10
(デフォルト)の範囲の整数を使用します。コネクタが最大インスタンス数までスケールアップした場合、スケールダウンは行われません。MACHINE_TYPE
:f1-micro
、e2-micro
、e2-standard-4
のいずれかにする必要があります。
コネクタと新しいサブネットを作成する:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
次のように置き換えます。
CONNECTOR_NAME
: Compute Engine の命名規則に一致するコネクタの名前。ただし、名前の長さは 21 文字未満とし、ハイフン(-)は 2 文字としてカウントする必要があります。REGION
: サーバーレス サービスまたはジョブのリージョンと一致しているコネクタのリージョン。サービスまたはジョブがus-central
またはeurope-west
にある場合は、us-central1
またはeurope-west1
を使用します。VPC_NETWORK
: コネクタを接続する VPC ネットワークの名前。コネクタと VPC ネットワークを同じプロジェクトに配置する必要があります。IP_RANGE
: Google Cloud でコネクタの VPC ネットワークに作成する新しいサブネットのプライマリ IPv4 アドレス範囲として使用する未使用の/28
CIDR(10.8.0.0/28
など)を指定します。指定した IP 範囲が、コネクタの VPC ネットワークにすでに存在するルートと競合しないようにしてください。新しいサブネットの名前は aet- という接頭辞で始まります。MIN
: コネクタに使用するインスタンスの最小数。2
(デフォルト)~9
の範囲の整数を使用します。MAX
: コネクタに使用するインスタンスの最大数。3
~10
(デフォルト)の範囲の整数を使用します。コネクタが最大インスタンス数までスケールアップした場合、スケールダウンは行われません。MACHINE_TYPE
:f1-micro
、e2-micro
、e2-standard-4
のいずれかにする必要があります。
使用する前に、コネクタが
READY
状態になっていることを確認します。gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
次のように置き換えます。
CONNECTOR_NAME
: コネクタの名前。これは、前のステップで指定した名前です。REGION
: コネクタのリージョン。これは、前の手順で指定したリージョンです。
出力には、
state: READY
という行が含まれます。
Terraform
Terraform リソースを使用して、vpcaccess.googleapis.com
API を有効にできます。
Terraform モジュールを使用して VPC ネットワークとサブネットを作成した後、コネクタを作成できます。
VPC ネットワークに接続するように関数を構成する
サーバーレス VPC アクセス コネクタを使用して VPC ネットワークに接続し、下り(外向き)トラフィックを送信するように各関数を構成する必要があります。Google Cloud コンソールまたは Google Cloud CLI で、コネクタを使用する関数を構成できます。
コンソール
新しい関数を構成する場合は、[関数を作成] をクリックします。既存の関数を構成する場合は、関数をクリックしてから [編集] をクリックします。
新しい関数を構成する場合は、必要に応じて最初の関数設定ページに入力してから、[ランタイム、ビルド...] をクリックして関数の構成ページを表示します。
[接続] タブをクリックし、[下り(外向き)設定] の [VPC ネットワーク] メニューで次のいずれかのオプションを選択します。
- VPC ネットワークから関数の接続を解除するには、[なし] を選択します。
- 既存のコネクタを使用するには、プルダウン リストからそのコネクタを選択するか、[カスタム] を選択して、プルダウン リストに表示されていない既存のコネクタを使用します。
- 新しいコネクタを作成するには、[新しい VPC コネクタを追加] を選択します。(プレビュー)
コネクタの作成方法については、サーバーレス VPC アクセス コネクタを作成するをご覧ください。
[次へ] をクリックします。
gcloud
gcloud functions deploy
コマンドを使用して関数をデプロイし、--vpc-connector
フラグを指定します。
gcloud functions deploy FUNCTION_NAME \ --vpc-connector CONNECTOR_NAME \ FLAGS...
こ����
FUNCTION_NAME
���、関数の名前です。CONNECTOR_NAME
は、コネクタの名前です。FLAGS...
は、関数のデプロイ時に渡す他のフラグです。
--clear-vpc-connector
フラグを使用して、VPC ネットワークから関数の接続を解除します。
gcloud functions deploy FUNCTION_NAME \ --clear-vpc-connector \ FLAGS...
コネクタ経由で転送されるリクエストを制御する方法については、下り(外向き)設定をご覧ください。
VPC リソースへのアクセス
サーバーレス インフラストラクチャからコネクタへの上り(内向き)を許可する
コネクタ VM が Google Cloud の外部 IP アドレス範囲 35.199.224.0/19
からパケットを受信できるようにする必要があります。この範囲は、Cloud Run、Cloud Functions、App Engine のサービスがコネクタにパケットを送信できるように、基盤となる Google サーバーレス インフラストラクチャで使用されます。
サーバーレス VPC アクセスでは、コネクタの VM に適用される上り(内向き)許可ファイアウォール ルールを作成します。このファイアウォール ルールは、コネクタがターゲットの VPC ネットワークと同じプロジェクト内にある場合、35.199.224.0/19
からのパケットを許可します。コネクタがスタンドアロン VPC ネットワークをターゲットにしている場合、またはコネクタが共有 VPC ネットワークをターゲットとしていて、コネクタがホスト プロジェクトにある場合、コネクタとそのターゲット VPC ネットワークは同じプロジェクトにあります。
共有 VPC サービス プロジェクトでコネクタを作成する場合、共有 VPC ホスト プロジェクトのセキュリティ管理者またはプロジェクト オーナーは、35.199.224.0/19
からのパケットを許可し、コネクタ VM に適用される上り(内向き)許可ファイアウォール ルールを作成する必要があります。上り(内向き)許可の VPC ファイアウォール ルールの例を次に示します。
gcloud compute firewall-rules create RULE_NAME \ --action=ALLOW \ --rules=TCP \ --source-ranges=35.199.224.0/19 \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY \ --project=PROJECT_ID
次のように置き換えます。
- RULE_NAME: 新しいファイアウォール ルールの名前。例:
allow-vpc-connector-ingress
- VPC_CONNECTOR_NETWORK_TAG: ユニバーサル コネクタ ネットワーク タグ
vpc-connector
を使用すると、VPC ネットワーク内のすべてのコネクタにルールを適用できます。また、コネクタに固有のネットワーク タグを使用することもできます。固有のネットワーク タグの形式はvpc-connector-
REGION-
CONNECTOR_NAME です。ここで、REGION はコネクタの Google Cloud リージョン、CONNECTOR_NAME はコネクタの名前です。 - VPC_NETWORK: コネクタがターゲットとする VPC ネットワークの名前。
- PRIORITY: 0~65535 の整数。たとえば、0 は最も��い優先度に設定されます。
- PROJECT_ID: コネクタがターゲットとする VPC ネットワークを含むプロジェクトのプロジェクト ID。
コネクタ VM による VPC ネットワーク リソースへのアクセスを制限する
VPC ファイアウォール ルールまたはファイアウォール ポリシーのルールを使用して、コネクタのターゲット VPC ネットワーク内のリソースへのアクセスを制限できます。これらの制限は、次のいずれかの方法で実現できます。
- ターゲットがコネクタ VM のアクセスを制限するリソースを表し、ソースがコネクタ VM を表す上り(内向き)ルールを作成します。
- ターゲットがコネクタ VM を表し、宛先がコネクタ VM へのアクセスを制限するリソースを表す下り(外向き)ルールを作成します。
次の例は、各方法を示しています。
上り(内向き)ルールを使用してアクセスを制限する
ネットワーク タグまたは CIDR 範囲を選択して、VPC ネットワークへの受信トラフィックを制御します。
ネットワーク タグ
次の手順は、コネクタのネットワーク タグに基づいて、VPC ネットワークへのアクセスを制限する上り(内向き)ルールを作成する方法を示しています。
ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。
- Compute セキュリティ管理者のロール
compute.firewalls.create
権限が有効にされているカスタム IAM ロール
VPC ネットワーク間のコネクタのトラフィックを拒否します。
コネクタのネットワーク タグからの上り(内向き)を拒否するには、VPC ネットワークで優先度 1000 未満の上り(内向き)ファイアウォール ルールを作成します。これによって、デフォルトでサーバーレス VPC アクセスが VPC ネットワークに作成する暗黙的なファイアウォール ルールがオーバーライドされます。
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
次のように置き換えます。
RULE_NAME: 新しいファイアウォール ルールの名前。例:
deny-vpc-connector
PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは
tcp
またはudp
です。たとえば、tcp:80,udp
は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow
フラグのドキュメントをご覧ください。セキュリティと検証のために、次のサポートされていないプロトコルのトラフィックをブロックする拒否ルールを構成することもできます。
ah
、all
、esp
、icmp
、ipip
、sctp
。VPC_CONNECTOR_NETWORK_TAG: すべてのコネクタ(今後作成されるコネクタを含む)のアクセス権を制限する場合はユニバーサル コネクタ ネットワーク タグ。または、特定のコネクタのアクセス権を制限する場合は一意のネットワーク タグ。
- ユニバーサル ネットワーク タグ:
vpc-connector
一意のネットワーク タグ:
vpc-connector-REGION-CONNECTOR_NAME
次のように置き換えます。
- REGION: 制限するコネクタのリージョン
- CONNECTOR_NAME: 制限するコネクタの名前
コネクタ ��ットワーク タグの詳細については、ネットワーク タグをご覧ください。
- ユニバーサル ネットワーク タグ:
VPC_NETWORK: VPC ネットワークの名前
PRIORITY: 0~65535 の整数。たとえば、0 は最も高い優先度に設定されます。
コネクタ トラフィックを受信する必要があるリソースに対するコネクタのトラフィックを許可します。
allow
フラグとtarget-tags
フラグを使用して、VPC コネクタでアクセスする VPC ネットワーク内のリソースに対して上り(内向き)ファイアウォール ルールを作成します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
次のように置き換えます。
RULE_NAME: 新しいファイアウォール ルールの名前。例:
allow-vpc-connector-for-select-resources
PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは
tcp
またはudp
です。たとえば、tcp:80,udp
は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow
フラグのドキュメントをご覧ください。VPC_CONNECTOR_NETWORK_TAG: すべてのコネクタ(今後作成されるコネクタを含む)のアクセス権を制限する場合はユニバーサル コネクタ ネットワーク タグ。または、特定のコネクタのアクセス権を制限する場合は一意のネットワーク タグ。これは、前のステップで指定したネットワーク タグと一致する必要があります。
- ユニバーサル ネットワーク タグ:
vpc-connector
一意のネットワーク タグ:
vpc-connector-REGION-CONNECTOR_NAME
次のように置き換えます。
- REGION: 制限するコネクタのリージョン
- CONNECTOR_NAME: 制限するコネクタの名前
コネクタ ネットワーク タグの詳細については、ネットワーク タグをご覧ください。
- ユニバーサル ネットワーク タグ:
VPC_NETWORK: VPC ネットワークの名前
RESOURCE_TAG: VPC コネクタがアクセスする VPC リソースのネットワーク タグ。
PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。
ファイアウォール ルールの作成に必須のフラグとオプション フラグの詳細については、gcloud compute firewall-rules create
のドキュメントをご覧ください。
CIDR 範囲
次の手順は、コネクタの CIDR 範囲に基づいて、VPC ネットワークへのアクセスを制限する上り(内向き)ルールを作成する方法を示しています。
ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。
- Compute セキュリティ管理者のロール
compute.firewalls.create
権限が有効にされているカスタム IAM ロール
VPC ネットワーク間のコネクタのトラフィックを拒否します。
コネクタの CIDR 範囲からの上り(内向き)を拒否するには、VPC ネットワークで優先度 1000 未満の上り(内向き)ファイアウォール ルールを作成します。これによって、デフォルトでサーバーレス VPC アクセスが VPC ネットワークに作成する暗黙的なファイアウォール ルールがオーバーライドされます。
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
次のように置き換えます。
RULE_NAME: 新しいファイアウォール ルールの名前。例:
deny-vpc-connector
PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは
tcp
またはudp
です。たとえば、tcp:80,udp
は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow
フラグのドキュメントをご覧ください。セキュリティと検証のために、次のサポートされていないプロトコルのトラフィックをブロックする拒否ルールを構成することもできます。
ah
、all
、esp
、icmp
、ipip
、sctp
。VPC_CONNECTOR_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲
VPC_NETWORK: VPC ネットワークの名前
PRIORITY: 0~65535 の整数。たとえば、0 は最も高い優先度に設定されます。
コネクタ トラフィックを受信する必要があるリソースに対するコネクタのトラフィックを許可します。
allow
フラグとtarget-tags
フラグを使用して、VPC コネクタでアクセスする VPC ネットワーク内のリソースに対して上り(内向き)ファイアウォール ルールを作成します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
次のように置き換えます。
RULE_NAME: 新しいファイアウォール ルールの名前。例:
allow-vpc-connector-for-select-resources
PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは
tcp
またはudp
です。たとえば、tcp:80,udp
は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow
フラグのドキュメントをご覧ください。VPC_CONNECTOR_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲
VPC_NETWORK: VPC ネットワークの名前
RESOURCE_TAG: VPC コネクタがアクセスする VPC リソースのネットワーク タグ。
PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。
ファイアウォール ルールの作成に必要なフラグとオプション フラグの詳細については、gcloud compute firewall-rules create
のドキュメントをご覧ください。
下り(外向き)ルールを使用してアクセスを制限する
次の手順は、コネクタのアクセスを制限する下り(外向き)ルールを作成する方法を示しています。
ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。
- Compute セキュリティ管理者のロール
compute.firewalls.create
権限が有効にされているカスタム IAM ロール
コネクタからの下り(外向き)トラフィックを拒否します。
サーバーレス VPC アクセス コネクタに下り(外向き)ファイアウォール ルールを作成し、確立済みのレスポンスを除き、宛先に送信トラフィックを送ることができないようにします。
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
次のように置き換えます。
RULE_NAME: 新しいファイアウォール ルールの名前。例:
deny-vpc-connector
PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは
tcp
またはudp
です。たとえば、tcp:80,udp
は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow
フラグのドキュメントをご覧ください。セキュリティと検証のために、次のサポートされていないプロトコルのトラフィックをブロックする拒否ルールを構成することもできます。
ah
、all
、esp
、icmp
、ipip
、sctp
。VPC_CONNECTOR_NETWORK_TAG: 既存のすべての VPC コネクタと今後作成される VPC コネクタにルールを適用する場合は、ユニバーサル VPC コネクタのネットワーク タグを使用します。または、特定のコネクタを制御する場合は、一意の VPC コネクタのネットワーク タグを使用します。
VPC_NETWORK: VPC ネットワークの名前
PRIORITY: 0~65535 の整数。たとえば、0 は最も高い優先度に設定されます。
コネクタがアクセスするように設定した CIDR 範囲内に宛先が存在する場合に、下り(外向き)トラフィックを許可します。
allow
フラグとdestination-ranges
フラグを使用して、特定の宛先範囲でコネクタからの下り(外向き)トラフィックを許可するファイアウォール ルールを作成します。宛先範囲には、コネクタにアクセスを許可する VPC ネットワーク内のリソースの CIDR 範囲を設定します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
次のように置き換えます。
RULE_NAME: 新しいファイアウォール ルールの名前。例:
allow-vpc-connector-for-select-resources
PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは
tcp
またはudp
です。たとえば、tcp:80,udp
は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow
フラグのドキュメントをご覧ください。RESOURCE_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲
VPC_NETWORK: VPC ネットワークの名前
VPC_CONNECTOR_NETWORK_TAG: 既存のすべての VPC コネクタと今後作成される VPC コネクタにルールを適用する場合は、ユニバーサル VPC コネクタのネットワーク タグを使用します。または、特定のコネクタを制御する場合は、一意の VPC コネクタのネットワーク タグを使用します。前のステップで一意のネットワーク タグを使用した場合は、一意のネットワーク タグを使用します。
PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。
ファイアウォール ルール���作成に必須のフラグとオプション フラグの詳細については、gcloud compute firewall-rules create
のドキュメントをご覧ください。
コネクタを管理する
VPC ネットワークから関数を切断する
Google Cloud Console または Google Cloud CLI ��使用����、VPC ���ットワークから関数を切断��きます。
コンソール
Google Cloud コンソールで Cloud Functions の概要ページに移動します。
既存の関数をクリックして詳細ページに移動し、[編集] をクリックします。
[ランタイム、ビルド...] をクリックして詳細設定を表示します。
[接続] タブの [下り(外向き)設定] で、[VPC コネクタ] フィールドにコネクタの名前を入力するか、フィールドを空白にしてサービスを VPC ネットワークから切断します。
gcloud
--clear-vpc-connector
フラグを使用して、VPC ネットワークから関数を切断します。
gcloud functions deploy FUNCTION_NAME \ --clear-vpc-connector \ FLAGS...
ここで
FUNCTION_NAME
は、関数の名前です。CONNECTOR_NAME
は、コネクタの名前です。FLAGS...
は、関数のデプロイ時に渡す他のフラグです。
トラフィックがなく、接続解除されている場合でも、コネクタの料金は引き続き発生します。詳細については、料金をご覧ください。不要になったコネクタは削除して、請求が発生しないようにしてください。
コネクタを更新する
Google Cloud コンソール、Google Cloud CLI、または API を使用して、コネクタの次の属性を更新したり、モニタリングしたりできます。
- マシン(インスタンス)タイプ
- インスタンスの最小数と最大数
- 最近のスループット、インスタンス数、CPU 使用率
マシンタイプを更新する
コンソール
サーバーレス VPC アクセスの概要ページに移動します。
編集するコネクタを選択して、[編集] をクリックします。
[インスタンス タイプ] リストで、目的のマシン(インスタンス)タイプを選択します。使用可能なマシンタイプについては、スループットとスケーリングのドキュメントをご覧ください。
gcloud
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
コネクタのマシンタイプを更新するには、ターミナルで次のコマンドを実行します。
gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
次のように置き換えます。CONNECTOR_NAME
: コネクタの名前。REGION
: コネクタのリージョンの名前。MACHINE_TYPE
: 目的のマシンタイプ。使用可能なマシンタイプについては、スループットとスケーリングのドキュメントをご覧ください。
インスタンスの最小数と最大数を減らす
インスタンスの最小数と最大数を減らすには、次の操作を行います。
- 目的の値で新しいコネクタを作成します。
- 新しいコネクタを使用するようにサービスまたは関数を更新します。
- トラフィックを移行したら、古いコネクタを削除します。
詳細については、サーバーレス VPC アクセス コネクタを作成するをご覧ください。
インスタンスの最小数と最大数を増やす
コンソール
サーバーレス VPC アクセスの概要ページに移動します。
編集するコネクタを選択して、[編集] をクリックします。
[最小インスタンス数] フィールドに、目的のインスタンスの最小数を選択します。
このフィールドに設定可能な最小値は現在の値です。このフィールドに設定可能な最大値は、[最大インスタンス数] フィールドの現在の値から 1 を引いた値になります。たとえば、[最大インスタンス数] フィールドの値が 8 の場合、[最小インスタンス数] フィールドに設定可能な最大値は 7 になります。
[最大インスタンス数] フィールドでインスタンスの最大数を選択します。
このフィールドに設定可能な最小値は現在の値です。このフィールドに設定可能な最大値は 10 です。
gcloud
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
コネクタのインスタンスの最小数または最大数を増やすには、ターミナルで次のコマンドを実行します。
gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
次のように置き換えます。
CONNECTOR_NAME
: コネクタの名前。REGION
: コネクタのリージョンの名前。MIN_INSTANCES
: 目的の最小インスタンス数。- このフィールドに設定可能な最小値は
min_instances
の現在の値です。現在の値を確認するには、現在の属性値を確認するをご覧ください。 - このフィールドに設定可能な最大値は、現在の
max_instances
の値から 1 を引いた値になります。これは、min_instances
をmax_instances
より小さくする必要があるためです。たとえば、max_instances
が 8 の場合、このフィールドに設定可能な最大値は 7 です。コネクタがデフォルトのmax-instances
値(10)を使用する場合、このフィールドに設定可能な最大値は 9 になります。max-instances
の値を確認するには、現在の属性値を確認するをご覧ください。
- このフィールドに設定可能な最小値は
MAX_INSTANCES
:- このフィールドに設定可能な最小値は
max_instances
の現在の値です。現在の値を確認するには、現在の属性値を確認するをご覧ください。 - このフィールドに設定可能な最大値は 10 です。
インスタンスの最大数を増やさずに最小数だけを増やす場合でも、インスタンスの最大数を指定する必要があります。逆に、インスタンスの最小数を更新せずに最大数を更新する場合でも、インスタンスの最小数を指定する必要があります。インスタンスの最小数または最大数を現在の値のままにするには、現在の値を指定します。現在の値を確認するには、現在の属性値を確認するをご覧ください。
- このフィールドに設定可能な最小値は
現在の属性値を確認する
コネクタの現在の属性値を確認するには、ターミナルで次���コマンドを実行します。
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT次のように置き換えます。
CONNECTOR_NAME
: コネクタの名前。REGION
: コネクタのリージョンの名前。PROJECT
: Google Cloud プロジェクトの名前。
コネクタの使用状況をモニタリングする
使用状況の推移をモニタリングすると、コネクタの設定を調整するタイミングを判断するのに役立ちます。たとえば、CPU 使用率が急激に上昇した場合は、より良い結果を得るためにインスタンスの最大数を増やすことができます。また、スループットが上限に近づいている場合は、より大きなマシンタイプに切り替えることができます。
Google Cloud コンソールを使用してコネクタのスループット、インスタンス数、CPU 使用率の指標の推移を表示するには:
サーバーレス VPC アクセスの概要ページに移動します。
モニタリングするコネクタの名前をクリックします。
表示日数を 1~90 日の間で選択します。
[スループット] グラフで、グラフにカーソルを合わせると、コネクタの最近のスループットが表示されます。
[インスタンス数] グラフで、グラフにカーソルを合わせると、コネクタによって最近使用されたインスタンスの数が表示されます。
[CPU 使用率] グラフで、グラフにカーソルを合わせると、コネクタの最新の CPU 使用率が表示されます。グラフには、インスタンスの CPU 使用率の分布が表示されます(50、95、99 パーセンタイル)。
コネクタを削除する
コネクタを削除する前に、接続中のサービスまたはジョブがないことを確認してください。
共有 VPC ホスト プロジェクトでコネクタを設定した共有 VPC ユーザーの場合は、gcloud compute networks vpc-access connectors describe
コマンドを使用して、特定のコネクタを使用するサービスまたはジョブが存在するプロジェクトを一覧表示できます。
コネクタを削除するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。
コンソール
Google Cloud コンソールで、サーバーレス VPC アクセスの概要ページに移動します。
削除するコネクタを選択します。
[削除] をクリックします。
gcloud
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
コネクタを削除するには、次の
gcloud
コマンドを使用します。gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
次のように置き換えます。
- CONNECTOR_NAME は、削除するコネクタの名前に置き換えます。
- REGION は、コネクタが配置されているリージョン��置き換えます。
トラブルシューティング
サービス アカウントの権限
Google Cloud プロジェクトでオペレーションを実行するために、サーバーレス VPC アクセスはサーバーレス VPC アクセス サービス エージェントのサービス アカウントを使用します。このサービス アカウントのメールアドレスは、次の形式になります。
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
このサービス アカウントには、デフォルトでサーバーレス VPC アクセス サービス エージェントのロール(roles/vpcaccess.serviceAgent
)が設定されています。このアカウントの権限を変更すると、サーバーレス VPC アクセスのオペレーションが失敗する可能性があります。
エラー
サービス アカウントでサービス エージェントのロールが必要であるというエラー
「リソース サービスの使用を制限する」という組織のポリシーの制約を使用して Cloud Deployment Manager(deploymentmanager.googleapis.com
)をブロックすると、次のエラー メッセージが表示されることがあります。
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
組織のポリシーを設定して、拒否リストから Deployment Manager を削除するか、許可リストに追加します。
コネクタ作成エラー
コネクタの作成でエラーが発生した場合は、次の方法をお試しください。
- VPC ネットワーク内で予約されている既存の IP アドレスと重複しない RFC 1918 の内部 IP 範囲を指定します。
- プロジェクトから ID
serverless-vpc-access-images
で Compute Engine VM イメージを使用できるように、プロジェクトに権限を付与します。状況に応じて組織のポリシーを更新する方法については、イメージ アクセスの制約を設定するをご覧ください。
リソースにアクセスできない
コネクタを指定しても、VPC ネットワーク内のリソースにアクセスできない場合は、コネクタの IP アドレス範囲からの上り(内向き)を拒否する、優先度 1000 よりも小さいファイアウォール ルールが VPC ネットワーク上に存在しないことを確認してください。
共有 VPC サービス プロジェクトでコネクタを構成する場合は、ファイアウォール ルールでサーバーレス インフラストラクチャからコネクタへの上り(内向き)が許可されていることを確認してください。
接続拒否エラー
connection refused
または connection timeout
エラーが発生してネットワーク パフォーマンスが低下している場合は、サーバーレス アプリケーションの呼び出し間で接続が制限なしに増加している可能性があります。インスタンスごとに使用される最大接続数を制限するには、接続プールをサポートするクライアント ライブラリを使用します。接続プールの使用方法を説明する詳しい例については、データベース接続を管理するをご覧ください。
リソースが見つからないエラー
VPC ネットワークまたはファイアウォール ルールを削除すると、次のようなメッセージが表示される場合があります。The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
このエラーとその解決方法については、VPC ファイアウォール ルールのドキュメントのリソースが見つからないエラーをご覧ください。
サービス アカウントに必要な権限 vpcaccess.connectors.use がない...
まず、ロール roles/vpcaccess.user
がサービス アカウントに割り当てられていることを確認します。
VPC コネクタで権限の問題が引き続き発生する場合は、実際に共有 VPC であるかどうかを確認してください。その場合は、ホスト プロジェクトで追加の設定が必要です。
次のステップ
- Cloud Functions から Memorystore に接続する。
- Cloud Functions のネットワーク設定を構成する。
- サーバーレス VPC アクセスの監査ロギングを使用して管理アクティビティをモニタリングする。
- VPC Service Controls でサービス境界を作成して、リソースとデータを保護する。
- サーバーレス VPC アクセスに関連付けられている Identity and Access Management(IAM)��ロールについて学習する。各ロールに関連付けられている権限の一覧については、IAM のドキュメントのサーバーレス VPC アクセスのロールをご覧ください。