gRPC 直接接続

直接接続は、 Google Cloud クライアント ライブラリと Cloud Storage の間で高パフォーマンスの認証済み直接 gRPC ネットワーク接続が可能になる接続ソリューションです。これにより、レイテンシと接続オーバーヘッドが削減されます。gRPC を使用して直接接続で Google Cloudに接続すると、サポートされている Google Cloudクライアント ライブラリを介して開始されたリクエストは、Google Front End(GFE)をバイパスして Cloud Storage に直接転送されます。

直接接続は、Compute Engine 仮想マシン(VM)から行われたリクエストでのみ使用できます。

直接接続の要件

サポートされている Cloud Storage クライアント ライブラリを使用して Cloud Storage に接続する場合、直接接続はデフォルトで有効になりますが、次の条件がすべて満たされた場合にのみ使用可能になります。

  • Cloud Storage とやり取りする Compute Engine VM には、サービス アカウントに権限がない場合でも、関連付けられたサービス アカウントが必要です。このサービス アカウントは、Application Layer Transport Security のハンドシェイク プロセスで Compute Engine VM を表すために使用されます。

  • Cloud Storage バケットとやり取りする Compute Engine VM は、バケットと同じ場所に配置する必要があります。たとえばバケットが us-central1 にある場合、VM は us-central1-a に配置できます。バケットがマルチリージョンまたはデュアルリージョンにある場合、VM はマルチリージョンまたはデュアルリージョンを構成するリージョンに存在する必要があります。たとえば、バケットが us マルチリージョンにある場合、VM は us-east4-c に配置できます。

    バケットのロケーションの詳細については、ロケーションをご覧ください。

  • ルートファイアウォール ルールにより、IPv4 トラフィックは 34.126.0.0/18 に到達し、IPv6 トラフィックは 2001:4860:8040::/42 に到達します。また、トラフィックがエンドポイント storage.googleapis.com:443directpath-pa.googleapis.com:443 に到達できるようにする必要があります。

    これらのエンドポイントに接続できるかどうかを確認する方法については、ネットワーク構成を確認するをご覧ください。ルートの設定については、ルートの構成をご覧ください。

  • Cloud Storage クライアント ライブラリには、アプリケーションを Cloud Storage に対して認証し、直接接続を利用できるようにするための特定の認証情報要件があります。

    • Java クライアント ライブラリには、ユーザー アカウントの認証情報またはサービス アカウントの認証情報のいずれかが必要です。

    • C++ クライアント ライブラリにはサービス アカウント認証情報が必要です。

    • Go クライアント ライブラリにはサービス アカウント認証情報が必要です。1.52.0 より前のバージョンでは、バケットにアクセスする VM のデフォルトのサービス アカウントの認証情報が必要です。

    VM が Cloud Storage の認証に使用するアカウントの名前を表示するには、gcloud auth list コマンドを使用します。

    gcloud auth list --filter=status:ACTIVE --format="value(account)"
    

    Go クライアント ライブラリを使用しており、認証に使用されている Google アカウントが VM のデフォルト サービス アカウントと一致するかどうかを確認する必要がある場合は、gcloud compute instances describe コマンドを使用します。

    gcloud compute instances describe INSTANCE_NAME --format='yaml(serviceAccounts)'
    

    INSTANCE_NAME は実際のインスタンス名に置き換えます。

    認証の詳細については、 Google ID 管理の概要をご覧ください。

Google Cloud CLI を使用して接続を確認する

Google Cloud CLI では、gcloud storage buckets describe gs://example-bucket を使用してバケットに GET 呼び出しを発行することで、バケットの直接接続の診断をテストできます。このセクションでは、Google Cloud CLI を使用して直接接続の診断テストを実行する方法について説明します。

始める前に

  1. バケットに対する storage.buckets.get IAM 権限があることを確認します。この権限は、Storage レガシー バケット読み取り(roles/storage.legacyBucketReader)ロールを使用して付与できます。

  2. gcloud alpha storage diagnose コマンドは、Google Cloud CLI バージョン 531.0.0 以降でのみ使用できます。このコマンドを使用するには、最新バージョンの Google Cloud CLI にアップグレードすることをおすすめします。

診断を実行する

直接接続が利用可能かどうかを確認するには、引数 --test-type=DIRECT_CONNECTIVITY を指定して gcloud alpha storage diagnose を実行します。

gcloud alpha storage diagnose --test-type=DIRECT_CONNECTIVITY gs://BUCKET_NAME

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

  • BUCKET_NAME: バケットの名前。例: my-bucket

接続が確立すると、次のようなレスポンスが返されます。

Using my-bucket bucket for the diagnostic tests.
Bucket location : US
Bucket storage class : STANDARD
Running diagnostic: Direct Connectivity Diagnostic...
WARNING: This diagnostic is experimental. The output may change, and checks may be added or removed at any time. Please do not rely on the diagnostic being present.
Finished running diagnostic: Direct Connectivity Diagnostic
Generating diagnostic report...
NAME
Direct Connectivity Diagnostic
    ┌────────────────────────────┬─────────────────────────────────────────────────────────────────────────┬──────────┐
    │            NAME            │                           PAYLOAD_DESCRIPTION                           │  RESULT  │
    ├────────────────────────────┼─────────────────────────────────────────────────────────────────────────┼──────────┤
    │ Direct Connectivity Call   │ Able to get bucket metadata using Direct Connectivity network path.     │ Success. │
    └────────────────────────────┴─────────────────────────────────────────────────────────────────────────┴──────────┘

ネットワーク構成を確認する

Google Cloud CLI を使用して直接接続を確認しているときに Unable to connect to Traffic Director エラーが発生した場合は、次の手順に沿って、ネットワーク構成で VM から必要なエンドポイントへのトラフィックの通過が許可されていることを確認します。

直接接続には、directpath-pa.googleapis.com:443storage.googleapis.com:443 でホストされているサービスが必要です。サービスに接続できるかどうかを確認するには、directpath-pa.googleapis.com:443 または storage.googleapis.com:443 に curl 呼び出しを行います。例:

curl directpath-pa.googleapis.com:443

接続が確立すると、エラーなしで空のレスポンスが返されます。

curl: (52) Empty reply from server

接続できない場合は、次のようなエラーが返されます。

curl: (56) Recv failure: Connection reset by peer

制限事項

直接接続は Private Service Connect をサポートしていません。