本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用介面 VPC 端點連線至 Athena Spark 工作階段
對於使用 Apache Spark 3.5 版的工作群組,您可以使用虛擬私有雲端 (VPC) 中的介面 VPC 端點 (AWS PrivateLink) 直接連線至 Athena Spark 工作階段,而不是透過網際網路連線。當您使用介面 VPC 端點時,VPC 和 Athena Spark 工作階段端點之間的通訊會完全在 AWS 網路中執行。
每個 VPC 端點皆會由一個或多個具私有 IP 地址彈性網路介面 (ENI) 來表示,而該介面位於 VPC 子網路中。VPC 中的 ENIs 不需要公有 IP 地址,即可與 Athena Spark 工作階段端點通訊。
若要透過 VPC 使用 Athena Spark 工作階段端點,您必須從 VPC 內的執行個體連線,或使用 (Site-to-Site VPN) 或 將私有網路連線至 VPC AWS Direct Connect。
支援的端點
下列 Athena Spark 工作階段端點支援透過 AWS PrivateLink 進行私有存取:
| Endpoint | Description | 服務名稱 |
|---|---|---|
| Spark Connect | 用於遠端 Spark 工作負載執行的 gRPC 端點 | com.amazonaws. |
| 即時 UI | 瀏覽器型即時 Spark 任務監控 | com.amazonaws. |
| 持久性 UI | 已完成工作階段的 Spark 歷史記錄伺服器 | com.amazonaws. |
考量事項
-
為了確保工作階段端點 URLs 只能從 VPC 內存取,您必須透過 Athena API VPC 端點呼叫
GetSessionEndpoint(Spark Connect) 或GetResourceDashboard(即時 UI 和持久性 UI)。Athena 會將原始 VPC 嵌入存取字符中,並強制從相同的 VPC 存取端點。 -
從 VPC 內產生的工作階段端點 URL 可以從相同的 VPC 或公有網際網路存取,但不能從不同的 VPC 存取。這支援常見的工作流程,其中字符是從 VPC 內以程式設計方式產生,而產生的儀表板 URL 會在本機瀏覽器中開啟。
-
從公有網際網路產生的工作階段端點 URL 無法從 VPC 內存取。
-
Athena Spark Connect、即時 UI 或持久性 UI 端點不支援 VPC 端點政策。
-
Athena API 端點支援 VPC 端點政策。若要控制哪些 IAM 主體可以叫用 Athena API 端點,請將 VPC 端點政策套用至您的 Athena API VPC 端點 (
com.amazonaws.)。region.athena
為 Athena Spark 工作階段端點建立 VPC 端點
您可以使用 AWS 管理主控台 或 建立介面 VPC 端點 AWS CLI。
若要使用 建立端點 AWS CLI:
aws ec2 create-vpc-endpoint \ --vpc-id <your-vpc-id> \ --service-name com.amazonaws.<region>.athena.sessions \ --vpc-endpoint-type Interface \ --subnet-ids <subnet-id> \ --security-group-ids <security-group-id> \ --private-dns-enabled
在您建立端點並啟用私有 DNS 之後,Spark Connect 工作階段 URL 會自動解析為您的 VPC 端點,不需要變更 SparkConnect 用戶端組態。如需詳細資訊,請參閱 AWS PrivateLink 文件中的建立介面端點。
為 Athena Spark 工作階段端點建立 VPC 端點政策
Athena Spark Connect、即時 UI 或持久性 UI 端點不支援 VPC 端點政策。
若要控制存取,請將 VPC 端點政策連接至您的 Athena API 端點 (com.amazonaws.)。由於工作階段端點 URLs 繫結至產生它們的 VPC,因此控制誰可以呼叫 region.athenaGetResourceDashboard GetSessionEndpoint或透過 API 端點有效地控制對對應工作階段端點的存取。
如需詳細資訊,請參閱使用 VPC 端點控制服務的存取。
下列範例僅允許特定 IAM 角色產生工作階段端點 URLs:
{ "Statement": [ { "Action": [ "athena:GetSessionEndpoint", "athena:GetResourceDashboard" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::<account-id>:role/<role-name>" } } ] }