オンライン予測に Private Service Connect を使用する

Private Service Connect を使用すると、パブリック IP アドレス、パブリック インターネット アクセス、明示的にピアリングされた内部 IP アドレス範囲を必要とせずに、複数のプロジェクトと VPC ネットワークから Vertex AI のオンライン予測に安全にアクセスできます。

オンライン予測のユースケースで、次の要件がある場合は、Private Service Connect の使用をおすすめします。

  • プライベートかつセキュアな接続を必須にする
  • 低レイテンシを必要とする
  • 一般公開する必要はありません

Private Service Connect は、VPC ネットワークの転送ルールを使用して、Vertex AI オンライン予測サービスにトラフィックを単方向に送信します。転送ルールは、Vertex AI サービスを VPC ネットワークに公開するサービス アタッチメントに接続します。詳細については、Private Service Connect エンドポイントを介した Vertex AI サービスへのアクセスについてをご覧ください。Private Service Connect の設定の詳細については、Virtual Private Cloud(VPC)ドキュメントの Private Service Connect の概要をご覧ください。

エンドポイントを作成する

Private Service Connect が有効なオンライン予測エンドポイントを作成するには、次のいずれかの方法を使用します。

コンソール

  1. Google Cloud コンソールで、Vertex AI の [オンライン予測] ページに移動します。

    [オンライン予測] に移動

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

  3. エンドポイントの表示名を指定します。

  4. [非公開] を選択します。

  5. [Private Service Connect] を選択します。

  6. [プロジェクト ID を選択] をクリックします。

  7. エンドポイントの許可リストに追加するプロジェクトを選択します。

  8. [続行] をクリックします。

  9. モデルの仕様を選択します。詳細については、エンドポイントにモデルをデプロイするをご覧ください。

  10. [デプロイ] をクリックします。エンドポイントを作成してモデルをデプロイします。

  11. レスポンスのエンドポイント ID をメモします。これは、後で Private Service Connect エンドポイントを作成するときに VERTEXAI_ENDPOINT_ID 値に必要になります。

API

REST

データをリクエストする前に、次のように置き換えます。

  • VERTEXAI_PROJECT_ID: オンライン予測エンドポイントを作成する Google Cloud プロジェクトの ID。
  • REGION: Vertex AI を使用するリージョン。
  • VERTEXAI_ENDPOINT_NAME: オンライン予測エンドポイントの表示名。
  • ALLOWED_PROJECTS: Google Cloud プロジェクト ID のカンマ区切りリスト。各項目を引用符で囲みます(例: ["PROJECTID1", "PROJECTID2"])。プロジェクトがこのリストに含まれていない場合、そのプロジェクトから Vertex AI エンドポイントに予測リクエストを送信することはできません。このリストに VERTEXAI_PROJECT_ID を含めて、同じプロジェクトからエンドポイントを呼び出せるようにします。

HTTP メソッドと URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints

リクエストの本文(JSON):

{
  "displayName": "VERTEXAI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"]
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/VERTEXAI_PROJECT_NUMBER/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
VERTEXAI_ENDPOINT_ID をメモしておいてください。後の手順でモデルをデプロイする際に必要になります。

モデルのデプロイ

Private Service Connect を有効にしてオンライン予測エンドポイントを作成した後は、エンドポイントにモデルをデプロイするの手順に沿って、モデルをデプロイします。

サービス アタッチメントを取得する

モデルをデプロイすると、オンライン予測エンドポイントのサービス アタッチメントが作成されます。gcloud ai endpoints describe コマンドを実行して、サービス アタッチメント URI を取得します。

  1. エンドポイントの詳細の serviceAttachment 値のみを一覧表示します。

    gcloud ai endpoints describe VERTEXAI_ENDPOINT_ID \
    --project=VERTEXAI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    次のように置き換えます。

    • VERTEXAI_ENDPOINT_ID: 作成したオンライン予測エンドポイントの ID
    • VERTEXAI_PROJECT_ID: オンライン予測エンドポイントを作成した Google Cloud プロジェクトの ID
    • REGION: このリクエストのリージョン。

    出力は次のようになります。

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. serviceAttachment フィールドの文字列全体をメモします。これはサービス アタッチメント URI です。

Private Service Connect エンドポイントを作成する

Private Service Connect エンドポイントの内部 IP アドレスを予約し、そのアドレスで Private Service Connect エンドポイントを作成できます。エンドポイントを作成するには、サービス アタッチメント URI が必要です。

  1. Private Service Connect エンドポイントの内部 IP アドレスを予約するには、gcloud compute addresses create コマンドを使用します。

    gcloud compute addresses create ADDRESS_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION \
    --subnet=SUBNETWORK \
    --addresses=INTERNAL_IP_ADDRESS
    

    次のように置き換えます。

    • ADDRESS_NAME: 内部 IP アドレスの名前
    • VPC_PROJECT_ID: VPC ネットワークをホストする Google Cloud プロジェクトの ID。オンライン予測エンドポイントと Private Service Connect エンドポイントが同じプロジェクトでホストされている場合は、このパラメータに VERTEXAI_PROJECT_ID を使用します。
    • REGION: Private Service Connect エンドポイントを作成する Google Cloud リージョン
    • SUBNETWORK: IP アドレスを含む VPC サブネットの名前
    • INTERNAL_IP_ADDRESS: 予約する内部 IP アドレス。このパラメータは省略可能です。

      • このパラメータを指定する場合、IP アドレスはサブネットのプライマリ IP アドレス範囲内にする必要があります。IP アドレスには、RFC 1918 アドレス、または RFC 以外の範囲を持つサブネットを指定できます。
      • このパラメータを省略すると、内部 IP アドレスが自動的に割り振られます。
      • 詳細については、新しい静的内部 IPv4 または IPv6 アドレスを予約するをご覧ください。
  2. IP アドレスが予約されていることを確認するには、gcloud compute addresses list コマンドを使用します。

    gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \
    --project=VPC_PROJECT_ID
    

    レスポンスで、IP アドレスに RESERVED ステータスが表示されていることを確認します。

  3. Private Service Connect エンドポイントを作成し、オンライン予測サービス アタッチメントを指すようにするには、gcloud compute forwarding-rules create コマンドを使用します。

    gcloud compute forwarding-rules create PSC_ENDPOINT_NAME \
        --address=ADDRESS_NAME \
        --project=VPC_PROJECT_ID \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    次のように置き換えます。

    • PSC_ENDPOINT_NAME: Private Service Connect エンドポイントの名前
    • VPC_NETWORK_NAME: エンドポイントを作成する VPC ネットワークの名前
    • SERVICE_ATTACHMENT_URI: 先ほどメモしたサービス アタッチメント
  4. サービス アタッチメントがエンドポイントを受け入れることを確認するには、gcloud compute forwarding-rules describe コマンドを使用します。

    gcloud compute forwarding-rules describe PSC_ENDPOINT_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION
    

    レスポンスで、pscConnectionStatus フィールドに ACCEPTED ステータスが表示されていることを確認します。

省略可: 内部 IP アドレスを取得する

Private Service Connect エンドポイントの作成時に INTERNAL_IP_ADDRESS の値を指定しなかった場合は、gcloud compute forwarding-rules describe コマンドを使用して、自動的に割り振られたアドレスを取得できます。

gcloud compute forwarding-rules describe PSC_ENDPOINT_NAME \
--project=VERTEXAI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

次のように置き換えます。

  • PSC_ENDPOINT_NAME: Private Service Connect エンドポイントの名前
  • VERTEXAI_PROJECT_ID: プロジェクト ID
  • REGION: このリクエストのリージョン名

オンライン予測を取得する

Private Service Connect を使用してエンドポイントからオンライン予測を取得する方法は、公開エンドポイントからオンライン予測を取得する方法と似ていますが、次の点に注意してください。

  • リクエストは、オンライン予測エンドポイントの作成時に projectAllowlist で指定されたプロジェクトから送信する必要があります。
  • グローバル アクセスが有効になっていない場合は、同じリージョンからリクエストを送信する必要があります。
  • REST を使用して予測を行うには、内部 IP アドレスの DNS レコードを作成しない限り、エンドポイントの静的 IP アドレスを使用して接続する必要があります。たとえば、predict リクエストを次のエンドポイントに送信する必要があります。

    https://INTERNAL_IP_ADDRESS/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID:predict
    

    INTERNAL_IP_ADDRESS は、前に予約した内部 IP アドレスに置き換えます。

省略可: 内部 IP アドレスの DNS レコードを作成する

内部 IP アドレスを指定せずに Private Service Connect 対応エンドポイントからオンライン予測を取得できるように、DNS レコードを作成することをおすすめします。

詳細については、DNS を構成するその他の方法をご覧ください。

  1. gcloud dns managed-zones create コマンドを使用して、限定公開 DNS ゾーンを作成します。このゾーンは、Private Service Connect エンドポイントが作成された VPC ネットワークに関連付けられています。

    DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  # DNS names have "." at the end.
    gcloud dns managed-zones create ZONE_NAME \
    --project=VPC_PROJECT_ID \
    --dns-name=$DNS_NAME_SUFFIX \
    --networks=VPC_NETWORK_NAME \
    --visibility=private \
    --description="A DNS zone for Vertex AI endpoints using Private Service Connect."
    
    

    次のように置き換えます。

    • ZONE_NAME: DNS ゾーンの名前
  2. ゾーンに DNS レコードを作成するには、gcloud dns record-sets create コマンドを使用します。

    DNS_NAME=VERTEXAI_ENDPOINT_ID.REGION-VERTEXAI_PROJECT_NUMBER.$DNS_NAME_SUFFIX
    gcloud dns record-sets create $DNS_NAME \
    --rrdatas=INTERNAL_IP_ADDRESS \
    --zone=ZONE_NAME \
    --type=A \
    --ttl=60 \
    --project=VPC_PROJECT_ID
    

    次のように置き換えます。

    • VERTEXAI_PROJECT_NUMBER: プロジェクトの VERTEXAI_PROJECT_ID プロジェクト番号このプロジェクト番号は、Google Cloud コンソールで確認できます。詳細については、プロジェクトの識別をご覧ください。
    • INTERNAL_IP_ADDRESS: Private Service Connect 対応エンドポイントの内部 IP アドレス

    predict リクエストを次の場所に送信できるようになりました。

    https://VERTEXAI_ENDPOINT_ID.REGION-VERTEXAI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID:predict
    

制限事項

Private Service Connect を使用する Vertex AI エンドポイントには、次の制限があります。

  • エンドポイント内からのプライベート 下り(外向き)はサポートされていません。Private Service Connect エンドポイントは一方向であるため、他のプライベート Google Cloud ワークロードはコンテナ内からアクセスできません。
  • エンドポイントの projectAllowlist 構成は変更できません。
  • アクセス ロギングはサポートされていません。
  • リクエストとレスポンスのロギングはサポートされていません。
  • Vertex Explainable AI はサポートされていません。

プレビュー版の制限

プレビュー版では、次の制限が追加で適用されます。

  • Private Service Connect モデルをすべてデプロイ解除して再デプロイする場合は、サービス アタッチメント名が同じであっても、Private Service Connect エンドポイントを再作成する必要があります。
  • すべてのエンドポイントで同じ projectAllowlist 構成を使用する必要があります。

次のステップ