直接連線是一種連線解決方案,可讓 Google Cloud 用戶端程式庫與 Cloud Storage 之間建立經過驗證的直接 gRPC 網路連線,進而降低延遲和連線負擔。使用 gRPC 連線至 Google Cloud 使用直接連線時,透過支援的 Google Cloud 用戶端程式庫發出的要求會直接傳送至 Cloud Storage,略過 Google Front Ends (GFEs)。
只有從 Compute Engine 虛擬機器 (VM) 發出的要求,才能直接連線。
直接連線需求
使用支援的 Cloud Storage 用戶端程式庫連線至 Cloud Storage 時,系統預設會啟用直接連線,但只有在符合下列所有條件時,才能使用這項功能:
與 Cloud Storage 互動的 Compute Engine VM 必須附加服務帳戶,即使服務帳戶沒有任何權限也一樣。服務帳戶會在應用程式層傳輸層安全標準 (ALTS) 交握程序中,代表 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:443
和directpath-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 」。
使用 Google Cloud CLI 檢查連線
Google Cloud CLI 可透過對值區發出 GET
呼叫 (使用 gcloud storage buckets describe gs://example-bucket
),測試值區的直接連線診斷。本節說明如何使用 Google Cloud CLI 執行直接連線的診斷測試。
事前準備
請確認您擁有值區的
storage.buckets.get
IAM 權限,可使用 Storage Legacy Bucket Reader (roles/storage.legacyBucketReader
) 角色授予。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:443
和 storage.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。