連線至私有託管工具 - AWS DevOps 代理程式

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

連線至私有託管工具

私有連線概觀

AWS DevOps 代理程式可以使用自訂模型內容通訊協定 (MCP) 工具和其他整合進行擴充,這些工具可讓代理程式存取內部系統,例如私有套件登錄檔、自我託管可觀測性平台、內部文件 APIs 和來源控制執行個體 (請參閱:設定適用於 AWS DevOps 代理程式的功能)。這些服務通常在 Amazon Virtual Private Cloud (Amazon VPC) 內部執行,但有限制或沒有公有網際網路存取,這表示預設情況下, AWS DevOps 代理程式無法與其連線。

適用於 AWS DevOps Agent 的私有連線可讓您安全地將 Agent Space 連線至 VPC 中執行的服務,而不會將其公開至公有網際網路。私有連線可與需要連線到私有端點的任何整合搭配使用,包括 MCP 伺服器、自我託管 Grafana 或 Splunk 執行個體,以及 GitHub Enterprise Server 和 GitLab 自我管理等來源控制系統。

注意

如果您的私有託管工具從 VPC 內向 AWS DevOps 代理程式發出傳出請求,也可以使用 VPC 端點來保護此流量,使其保持在 AWS 網路內。例如,這可與透過 Webhook 事件觸發 DevOps 代理程式的工具搭配使用 (請參閱:透過 Webhook 叫用 DevOps 代理程式)。如需詳細資訊,請參閱VPC 端點 (AWS PrivateLink)

私有連線的運作方式

私有連線會在 AWS DevOps Agent 與 VPC 中的目標資源之間建立安全的網路路徑。在幕後, AWS DevOps 代理程式會使用 Amazon VPC Lattice 來建立此安全的私有連線路徑。VPC Lattice 是一種應用程式聯網服務,可讓您跨 VPCs、帳戶和運算類型連線、保護和監控應用程式之間的通訊,而無需管理基礎網路基礎設施。

當您建立私有連線時,會發生下列情況:

  • 您可以提供具有目標服務網路連線能力的 VPC、子網路和 (選用) 安全群組。

  • AWS DevOps Agent 會建立服務管理的資源閘道,並在您指定的子網路中佈建其彈性網路介面 (ENIs)。

  • 代理程式會使用 資源閘道,透過私有網路路徑將流量路由到目標服務的 IP 地址或 DNS 名稱。

資源閘道由 AWS DevOps Agent 完全管理,並顯示為帳戶中的唯讀資源 (名為 aidevops-{your-private-connection-name})。您不需要設定或維護它。在您的 VPC 中建立的唯一資源是您指定的子網路中的 ENIs。這些 ENIs做為私有流量的進入點,完全由 服務管理。他們不接受來自網際網路的傳入連線,而且您可以透過自己的安全群組保留對流量的完全控制。

安全

私有連線的設計具有多層安全性:

  • 不公開網際網路 – AWS DevOps 代理程式與目標服務之間的所有流量都會保留在 AWS 網路上。您的服務永遠不需要公有 IP 地址或網際網路閘道。

  • 服務控制的資源閘道 – 服務管理的資源閘道在您的帳戶中為唯讀。它只能由 AWS DevOps Agent 使用,其他服務或主體都無法透過它路由流量。您可以在 AWS CloudTrail 日誌中驗證這一點,這會記錄所有 VPC Lattice API 呼叫。

  • 您的安全群組、規則 – 您可以透過您擁有和管理的安全群組來控制 ENIs的傳入和傳出流量。如果您未指定安全群組, AWS DevOps Agent 會建立預設安全群組,範圍限定於您定義的連接埠。

  • 具有最低權限的服務連結角色 – AWS DevOps Agent 使用服務連結角色來僅建立必要的 VPC Lattice 和 Amazon EC2 資源。此角色的範圍是標記 的資源AWSAIDevOpsManaged,且無法存取您帳戶中的任何其他資源。

注意

如果您的組織具有限制 VPC Lattice API 動作的服務控制政策 (SCPs),則會透過服務連結角色建立服務受管資源閘道。確保您的 SCPs服務連結角色的必要動作。

Architecture

下圖顯示私有連線的網路路徑。

在此架構中:

  • AWS DevOps 代理程式會對目標服務啟動請求。

  • Amazon VPC Lattice 透過 VPC 中的服務受管資源閘道路由請求。如需使用您自己的 VPC Lattice 資源的進階設定,請參閱使用現有 VPC Lattice 資源的進階設定

  • VPC 中的 ENI 會收到流量,並將其轉送至目標服務的 IP 地址或 DNS 名稱。

  • 您的安全群組會管理透過 ENIs 允許哪些流量。

  • 從目標服務的角度來看,請求源自 VPC 內 ENIs的私有 IP 地址。

建立私有連線

您可以使用 AWS 管理主控台或 CLI AWS 建立私有連線。

注意

VPC Lattice 不支援下列可用區域:use1-az3usw1-az2apne1-az3apne2-az2euc1-az2euw1-az4cac1-az3、、ilc1-az2

先決條件

建立私有連線之前,請確認您有下列項目:

  • 作用中的客服人員空間 – 您需要帳戶中現有的客服人員空間。如果您沒有帳戶,請參閱 開始使用 AWS DevOps 代理程式

  • 可私有連線的目標服務 – 您的 MCP 伺服器、可觀測性平台或其他服務必須可從部署資源閘道的 VPC 存取已知的私有 IP 地址或 DNS 名稱。該服務可以在相同的 VPC、對等 VPC 或內部部署中執行,只要它可從資源閘道子網路路由。服務必須在您在建立連線時指定的連接埠上,提供最低 TLS 版本為 1.2 的 HTTPS 流量。

  • VPC 中的子網路 – 識別要建立 ENIs的 1-20 個子網路。建議您選取多個可用區域中的子網路,以獲得高可用性。這些子網路必須具有與目標服務的網路連線能力。VPC Lattice 可以使用每個可用區域一個子網路。

  • (選用) 安全群組 – 如果您想要使用特定規則控制流量,請準備最多五個安全群組 IDs以連接到 ENIs。如果您省略安全群組, AWS DevOps Agent 會建立預設安全群組。

私有連線是帳戶層級的資源。建立私有連線後,您可以在需要連接相同主機的多個整合和客服人員空間中重複使用該連線。

使用主控台建立私有連線

  1. 開啟 AWS DevOps Agent 主控台。

  2. 在導覽窗格中,選擇能力提供者,然後選擇私有連線

  3. 選擇建立新的連線

  4. 針對名稱,輸入連線的描述性名稱,例如 my-mcp-tool-connection

  5. 針對 VPC,選取將部署資源閘道 ENIs VPC。

  6. 針對子網路,選取一或多個子網路 (最多 20 個)。我們建議在至少兩個可用區域中選擇子網路。

  7. 針對 IP 地址類型,選取目標服務的 IP 地址類型 (IPv4IPv6DualStack)。

  8. (選用) 對於 IPv4 地址數量,如果您為 IP 地址類型選取 IPv4 或 Dualstack,則可以為資源閘道輸入每個 ENI 的 IPv4 地址數量。預設為每個 ENI 16 個 IPv4 地址。

  9. (選用) 對於安全群組,選取現有的安全群組 (最多 5 個),以限制允許哪些流量到達您的目標服務。如果您未選取任何 ,則會建立預設安全群組。

  10. (選用) 對於連接埠範圍,指定目標應用程式接聽的 TCP 連接埠 (例如 4438080-8090)。您最多可以指定 11 個連接埠範圍。

  11. 針對主機地址,輸入目標服務的 IP 地址或 DNS 名稱 (例如 mcp.internal.example.com10.0.1.50)。該服務必須可從選取的 VPC 連線。如果您選擇 DNS 名稱,則必須可從選取的 VPC 解析。

  12. (選用) 對於憑證公有金鑰,如果您指定的主機地址使用私有憑證授權單位發行的 TLS 憑證,請輸入憑證的 PEM 編碼公有金鑰。這可讓 AWS DevOps 代理程式信任與目標服務的 TLS 連線。

  13. 選擇建立連線

連線狀態會變更為建立進行中。此程序最多可能需要 10 分鐘。當狀態變更為作用中時,表示網路路徑已就緒。

如果狀態變更為建立失敗,請確認下列事項:

  • 您指定的子網路具有可用的 IP 地址。

  • 您的帳戶尚未達到 VPC Lattice 服務配額。

  • 沒有任何限制性 IAM 政策阻止服務連結角色建立資源。

注意

這些步驟也可以在功能提供者註冊Create a new private connection期間選取 來執行。如需詳細資訊,請參閱使用與功能提供者的私有連線

使用 CLI AWS 建立私有連線

執行下列命令來建立私有連線。將預留位置值取代為您自己的值。

aws devops-agent create-private-connection \ --name my-mcp-tool-connection \ --mode '{ "serviceManaged": { "hostAddress": "mcp.internal.example.com", "vpcId": "vpc-0123456789abcdef0", "subnetIds": [ "subnet-0123456789abcdef0", "subnet-0123456789abcdef1" ], "securityGroupIds": [ "sg-0123456789abcdef0" ], "portRanges": ["443"] } }'

回應包含連線名稱和 的狀態CREATE_IN_PROGRESS

{ "name": "my-mcp-tool-connection", "status": "CREATE_IN_PROGRESS", "resourceGatewayId": "rgw-0123456789abcdef0", "hostAddress": "mcp.internal.example.com", "vpcId": "vpc-0123456789abcdef0" }

若要檢查連線狀態,請使用 describe-private-connection命令:

aws devops-agent describe-private-connection \ --name my-mcp-tool-connection

當狀態為 時ACTIVE,您的私有連線即可使用。

搭配功能提供者使用私有連線

若要使用私有連線,您可以在功能提供者註冊期間連結至該連線。可搭配私有連線使用的支援功能包括:GitHubMCP ServerGitLabGrafana。您可以使用 AWS 管理主控台或 CLI AWS 執行此步驟。

注意

註冊功能提供者時, AWS DevOps 代理程式會驗證端點是否可連線並回應。在完成註冊之前,請確定您的目標服務正在執行並接受連線。

使用主控台與功能提供者使用私有連線

在 AWS DevOps 代理程式主控台中,可透過選取「使用私有連線連線至端點」選項,在註冊期間將私有連線連結至功能。

  1. 開啟 AWS DevOps 代理程式主控台並導覽至您的代理程式空間。

  2. 功能提供者區段中,選擇註冊

  3. 選取註冊您要搭配私有連線使用的功能類型。

  4. 在註冊詳細資訊檢視中,輸入您要使用私有連線 (例如,) 連線到的端點 URLhttps://mcp.internal.example.com

  5. 選取使用私有連線連線至端點

  6. 選取對應至您要連線之端點 URL 的現有私有連線,或選取建立新的私有連線以建立一個。

  7. 完成能力提供者的註冊程序。

使用 AWS CLI 搭配功能提供者使用私有連線

您可以透過包含 private-connection-name引數,向私有連線註冊 功能。以下是使用my-mcp-tool-connection私有連線向 API 金鑰授權註冊 MCP 伺服器的範例。將預留位置值取代為您自己的值。

aws devops-agent register-service \ --service mcpserver \ --private-connection-name my-mcp-tool-connection \ --service-details '{ "mcpserver": { "name": "my-mcp-tool", "endpoint": "https://mcp.internal.example.com", "authorizationConfig": { "apiKey": { "apiKeyName": "api-key", "apiKeyValue": "secret-value", "apiKeyHeader": "x-api-key" } } } }' \ --region us-east-1

驗證私有連線

私有連線達到作用中狀態且功能提供者已使用後,請確認 AWS DevOps 代理程式可以到達您的目標服務:

  1. 開啟 AWS DevOps 代理程式主控台並導覽至您的代理程式空間。

  2. 啟動新的聊天工作階段。

  3. 叫用使用私有連線所支援整合的命令。例如,如果您的 MCP 工具提供內部知識庫的存取權,請向客服人員詢問需要該知識庫的問題。

  4. 確認代理程式傳回私有服務的結果。

如果連線失敗,請檢查下列項目:

  • VPC Lattice 限制 - 確認您未達到任何資源閘道或其他 VPC Lattice 配額限制

  • 安全群組規則 – 確認連接至 ENIs的安全群組允許您服務接聽之連接埠上的傳出流量。同時驗證服務的安全群組是否允許目標連接埠上的傳入流量。流量來自 VPC CIDR 範圍內的 VPC Lattice 資料平面 IPs。您可以使用參考安全群組 (允許 ENI 安全群組做為來源) 或允許從 VPC CIDR 傳入。

  • 子網路連線 – 確認您選取的子網路可以將流量路由到您的服務。如果服務在不同子網路中執行,請確認路由表允許它們之間的流量。

  • 服務可用性 – 確認您的服務正在預期連接埠上執行並接受連線。

  • 不支援的可用區域 - 確認您的子網路位於支援的可用區域。執行aws ec2 describe-subnets --subnet-ids <your-subnet-ids> --query 'Subnets[*].[SubnetId,AvailabilityZoneId]'並檢查上述不支援的可用區域。

刪除私有連線

您可以使用 AWS 管理主控台或 CLI AWS 刪除未使用的私有連線。

使用主控台刪除私有連線

  1. 開啟 AWS DevOps Agent 主控台。

  2. 在導覽窗格中,選擇能力提供者,然後選擇私有連線

  3. 選取您要刪除之私有連線的動作功能表,然後選取移除

私有連線的狀態將顯示為「移除連線」,而 AWS DevOps 代理程式會從 VPC 中移除受管資源閘道和 ENIs。刪除完成後,連線不會再出現在私有連線清單中。

使用 CLI AWS 刪除私有連線

aws devops-agent delete-private-connection \ --name my-mcp-tool-connection

回應會傳回 DELETE_IN_PROGRESS. AWS DevOps 代理程式的狀態,將受管資源閘道和 ENIs 從 VPC 中移除。刪除完成後,連線不會再出現在私有連線清單中。

使用現有 VPC Lattice 資源的進階設定

如果您的組織已使用 Amazon VPC Lattice 並管理您自己的資源組態,您可以在自我管理模式中建立私有連線。您可以提供指向目標服務的現有資源組態的 Amazon Resource Name (ARN),而不是讓 AWS DevOps 代理程式為您建立資源閘道。

當您:

  • 想要完全控制資源閘道和資源組態生命週期。

  • 需要在多個 AWS 帳戶或服務之間共用資源組態。

  • 需要 VPC Lattice 存取日誌,以進行詳細的流量監控。

  • 執行hub-and-spoke網路架構。

若要使用 CLI AWS 建立自我管理的私有連線:

aws devops-agent create-private-connection \ --name my-advanced-connection \ --mode '{ "selfManaged": { "resourceConfigurationId": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-0123456789abcdef0" } }'

如需設定 VPC Lattice 資源閘道和資源組態的詳細資訊,請參閱 Amazon VPC Lattice 使用者指南