View a markdown version of this page

設定聯網、安全群組和 IAM 身分驗證 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定聯網、安全群組和 IAM 身分驗證

Amazon ECS 或 Amazon EKS 上的容器化部署需要正確的網路組態和 IAM 憑證管理,才能連線至 Neptune。

安全群組檢查清單

  • Neptune 叢集安全群組必須允許來自 Amazon EKS 節點或 Pod CIDR 範圍的連接埠 8182 (或為您的 Neptune 叢集設定的自訂連接埠) 上的傳入 TCP。

  • 如果您搭配自訂聯網使用 Amazon VPC CNI 外掛程式,請確認 Pod 子網路具有 Neptune 子網路的路由。

  • Neptune 必須與 Amazon ECS 或 Amazon EKS 叢集位於相同的 Amazon VPC 中,或透過 Amazon VPC 對等互連或 Transit Gateway 連接。

驗證容器內部的連線

偵錯應用程式層級問題之前,請從容器內部執行下列其中一個命令來確認網路路徑:

AWS CLI
aws neptunedata get-engine-status \ --endpoint-url https://your-neptune-endpoint:8182

如需詳細資訊,請參閱《 AWS CLI 命令參考》中的 get-engine-status

SDK
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', region_name='us-east-1', endpoint_url='https://your-neptune-endpoint:8182', config=Config(read_timeout=10) ) response = client.get_engine_status() print(response['status'])
awscurl
awscurl https://your-neptune-endpoint:8182/status \ --region us-east-1 \ --service neptune-db
注意

此範例假設您的 AWS 登入資料已在您的環境中設定。將 us-east-1 取代為 Neptune 叢集的區域。

curl
curl -k https://your-neptune-endpoint:8182/status
注意

-k 旗標會略過憑證驗證。僅用於連線測試,而非生產程式碼。

成功的回應會確認安全群組、路由和 DNS 解析都正常運作。逾時表示網路層級問題。

IAM 登入資料重新整理

如果您搭配 Neptune 使用 IAM 身分驗證,您的 Pod 必須在憑證過期之前重新整理憑證。我們建議將 Amazon EKS Pod Identity 用於新部署。也支援並廣泛使用服務帳戶的 IAM 角色 (IRSA)。

使用任一方法,在身分驗證產生器函數擷取登入資料,而不是在啟動時擷取一次。IRSA 和 Pod Identity 權杖會在 1 小時後過期。如果您在初始化時快取登入資料,請求會在字符過期AccessDeniedException: security token expired後失敗。

  • 對於 gremlin-go:在傳遞給 的gen函數cfg.Credentials.Retrieve(ctx)內呼叫 NewDynamicAuth

  • 對於 Java:NeptuneGremlinClient搭配HandshakeInterceptor重新整理每個新連線上 SigV4 簽署的 使用 。

跨帳戶存取

Neptune 不支援直接跨帳戶 IAM 身分驗證。如果您的 Amazon EKS 叢集位於與 Neptune 叢集不同的 AWS 帳戶中,則 Pod 必須先在 Neptune 帳戶中擔任角色,才能進行驗證。

Graph Explorer 的輸入組態

如果您在容器化環境中執行 Graph Explorer,請確保代理可存取所有路徑,而不只是 /explorer。在 Amazon EKS 上,設定您的輸入控制器規則以允許所有路徑。在 Amazon ECS 上,設定 Application Load Balancer 目標群組和接聽程式規則,將所有路徑轉送至 Graph Explorer 容器。Graph Explorer 的代理會呼叫 /summary/openCypher/gremlin/sparql。路徑限制路由規則會無提示地中斷代理。