為傳出流量啟用 VPC 存取 - AWS App Runner

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

為傳出流量啟用 VPC 存取

根據預設,您的 AWS App Runner 應用程式可以將訊息傳送到公用端點。這包括您自己的解決方案 AWS 服務,以及任何其他公共網站或 Web 服務。您的應用程式甚至可以從 Amazon 虛擬私有雲端 (Amazon VPC) 將訊息傳送到在 VPC 中執行的應用程式的公有端點。如果您在啟動環境時未設定 VPC,應用程式執行器會使用預設的 VPC,這是公用的。

您可以選擇在自訂 VPC 中啟動環境,以自訂傳出流量的網路和安全性設定。您可以讓 AWS App Runner 服務從 Amazon 虛擬私有雲端 (Amazon VPC) 存取在私有 VPC 中執行的應用程式。執行此操作之後,您的應用程式可以與 Amazon 虛擬私人雲端 (Amazon VPC) 中託管的其他應用程式連接並將訊息傳送到其他應用程式。範例包括 Amazon RDS 資料庫 ElastiCache、Amazon 以及在私有 VPC 中託管的其他私有服務。

VPC 連接器

您可以透過從應用程式執行器主控台 (稱為 VPC 連接器) 建立 VPC 端點,將您的服務與 VPC 建立關聯。若要建立 VPC 連接器,請指定 VPC、一或多個子網路,以及選擇性地指定一或多個安全群組。設定 VPC 連接器之後,您可以將其與一或多個應用程式執行器服務搭配使用。

一次性延遲

如果您將 App Runner 服務設定為輸出流量的自訂 VPC 連接器,則可能會遇到 2 到 5 分鐘的一次性啟動延遲。啟動程序會等到 VPC 連接器已準備好連線至其他資源,然後才會將服務狀態設定為執行中。您可以在第一次建立自訂 VPC 連接器時使用自訂 VPC 連接器來設定服務,也可以稍後執行服務更新來設定服務。

請注意,如果您對其他服務重複使用相同的 VPC 連接器組態,則不會有任何延遲。VPC 連接器組態以安全群組和子網路組合為基礎。對於指定的 VPC 連接器組態,延遲只會在初始建立 VPC 連接器超平面 ENI (彈性網路介面) 期間發生一次。

更多關於自訂 VPC 連接器和 AWS 超平面

應用程式執行器中的 VPC 連接器是以超平面 ( AWS Hyperplane) 為基礎,這是位於多個 AWS 資源 (例如 Net work Load BalancerNAT 閘道和 AWS) 背後的內部 Amazon 網路系統。 PrivateLink AWS Hyperplane 技術提供高輸送量和低延遲功能,以及更高的共用程度。當您建立 VPC 連接器並將其與服務產生關聯時,會在子網路中建立超平面 ENI。VPC 連接器組態以安全群組和子網路組合為基礎,您可以跨多個 App Runner 服務參考相同的 VPC 連接器。因此,基礎超平面 ENI 會在您的應用程式執行器服務之間共用。即使您擴大處理請求負載所需的任務數量,並使 VPC 中的 IP 空間更有效利用,這種共用也是可行的。如需詳細資訊,請參閱 AWS 容器部落格中的深入探討 AWS 應用程式執行器 VPC 聯網

子網路

每個子網路都位於特定的可用區域中。為了獲得高可用性,建議您至少選取三個可用區域的子網路。如果該區域的可用區域少於三個,建議您在所有支援的可用區域中選取子網路。

為 VPC 選取子網路時,請確定您選擇的是私有子網路,而非公有子網路。這是因為,當您建立 VPC 連接器時,應用程式執行器服務會在每個子網路中建立超平面 ENI。每個超平面 ENI 只會分配一個私有 IP 地址,並標記為AWSAppRunnerManaged密鑰的標籤。如果您選擇公有子網路,執行 App Runner 服務時會發生錯誤。不過,如果您的服務需要存取網際網路或其他公眾上的某些服務 AWS 服務,請參閱選取子網路時的考量

選取子網路時的考量

  • 當您將服務連線到 VPC 時,輸出流量無法存取公用網際網路。來自應用程式的所有輸出流量都會透過服務所連線的 VPC 導向。VPC 的所有網路規則都適用於應用程式的輸出流量。這表示您的服務無法存取公用網際網路和 AWS API。若要取得存取權,請執行下列其中一個動作:

    • 透過 NAT 閘道 Connect 子網路連線到網際網路。

    • 為您要存取的設 AWS 服務 定 VPC 端點。透過使 AWS PrivateLink用,您的服務會保留在 Amazon VPC 內。

  • 某些可用區域中的某些可用區域 AWS 區域 不支援可與 App Runner 服務搭配使用的子網路。如果您在這些可用區域中選擇子網路,則無法建立或更新服務。在這些情況下,App Runner 會提供詳細的錯誤訊息,指向不支援的子網路和可用區域。發生這種情況時,請從要求中移除不支援的子網路來進行疑難排解,然後再試一次。

安全群組

您可以選擇性地在指定的子網路 AWS 下指定 App Runner 用來存取的安全性群組。如果您未指定安全性群組,應用程式執行器會使用 VPC 的預設安全性群組。預設的安全群組會允許所有傳出流量。

新增安全性群組可為 VCP 連接器提供額外的安全性,讓您可以更好地控制網路流量。VPC 連接器僅用於應用程式的輸出通訊。您可以使用輸出規則來允許與所需目的地端點進行通訊。您還必須確保與目標資源相關聯的任何安全群組都具有適當的輸入規則。否則,這些資源無法接受來自 VPC 連接器安全性群組的流量。

注意

將服務與 VPC 建立關聯時,下列流量不會受到影響:

  • 入站流量 — 應用程式接收的內送訊息不會受到關聯 VPC 的影響。郵件會透過與您的服務相關聯的公用網域名稱路由傳送,且不會與 VPC 互動。

  • 應用程序運行器流量 — App Runner 代表您管理多個操作,例如提取源代碼和圖像,推送日誌和檢索秘密。這些動作產生的流量不會透過 VPC 路由傳送。

若要深入瞭解如何與 Amazon VPC AWS App Runner 整合,請參閱AWS 應用程式執行器虛擬私人雲端網路。

注意

對於傳出流量應用程序運行器目前僅支持 IPv4。

管理 VPC 存取

注意

如果您為服務建立輸出流量 VPC 連接器,接下來的服務啟動程序將會遇到一次性延遲。您可以在建立新服務時或之後使用服務更新設定此組態。如需詳細資訊,請參閱本指南的 < 使用應用程式執行器聯網 > 一章一次性延遲中的。

使用下列其中一種方法管理應用程式執行器服務的 VPC 存取權:

App Runner console

當您使用 App Runner 主控台建立服務時,或稍後更新其組態時,您可以選擇設定傳出流量。尋找主控台頁面上的 [網路設定] 區段。對於外寄網路流量,請選擇下列項目:

  • 公共訪問:將您的服務與其他人的公共端點相關聯 AWS 服務。

  • 自訂虛擬私人雲端:將您的服務與來自 Amazon VPC 的虛擬私人雲端產生關聯。您的應用程式可以與 Amazon VPC 中託管的其他應用程式連接並傳送訊息。

若要啟用自訂 VPC
  1. 開啟應用程式執行器主控台,然後在 [區域] 清單中選取您的 AWS 區域.

  2. 轉到配置服務下的網絡部分。

    顯示網路選項的 App Runner 主控台設定頁
  3. 選擇 [自訂 VPC] 做為 [外寄網路流量]。

  4. 在功能窗格中,選擇 VPC 連接器

    如果您已建立 VPC 連接器,則主控台會在您的帳戶中顯示 VPC 連接器清單。您可以選擇現有的 VPC 連接器,然後選擇 [下一步] 以檢閱組態。然後,轉到最後一步。或者,您可以使用下列步驟新增 VPC 連接器。

  5. 選擇 [新增],為您的服務建立新的 VPC 連接器。

    然後,將開啟 [新增 VPC 連接器] 對話方塊。

    顯示新增 VPC 連接器對話方塊的應用程式執行器
  6. 輸入 VPC 連接器的名稱,然後從可用清單中選取所需的 VPC。

  7. 若為子網路,請為您打算從中存取 App Runner 服務的每個可用區域選取一個子網路。為獲得更好的可用性,請選擇三個子網路。或者,如果子網路少於三個,請選擇所有可用的子網路。

    注意

    請務必將私人子網路指派給 VPC 連接器。如果您將公用子網路指派給 VPC 連接器,則您的服務無法在更新期間自動建立或復原。

  8. (選擇性) 在「安全性」群組中,選取要與端點網路介面關聯的安全群組。

  9. (選用) 若要新增標籤,請選擇 Add new tag (新增標籤),然後輸入標籤的鍵和值。

  10. 選擇新增

    您建立的 VPC 連接器的詳細資料會顯示在 VPC 連接器下。

  11. 選擇 [下一步] 檢閱您的組態,然後選擇 [建立並部署]。

    App Runner 會為您建立 VPC 連接器資源,然後將其與您的服務產生關聯。如果成功建立服務,則主控台會顯示服務儀表板,以及新服務的服務概觀

App Runner API or AWS CLI

當您呼叫CreateServiceUpdateServiceApp Runner API 動作時,請使用NetworkConfiguration參數的EgressConfiguration成員為您的服務指定 VPC 連接器資源。

使用下列應用程式執行器 API 動作來管理您的 VPC 連接器資源。

  • CreateVpcConnector— 建立新的 VPC 連接器。

  • ListVpcConnectors— 傳回與您 AWS 帳戶相關聯的 VPC 連接器清單。此清單包含完整描述。

  • DescribeVpcConnector— 傳回 VPC 連接器的完整描述。

  • DeleteVpcConnector— 刪除 VPC 連接器。如果您達到的 VPC 連接器配額 AWS 帳戶,您可能需要刪除不必要的 VPC 連接器。

若要在具有 VPC 輸出存取權的應用程式執行器上部署應用程式,您必須先建立 VPC 連接器。您可以指定一或多個要與應用程式關聯的子網路和安全性群組來執行此操作。然後,您可以在「建立」或UpdateService透過 CLI 參照 VPC 連接器,如下列範例所示:

cat > vpc-connector.json <<EOF { "VpcConnectorName": "my-vpc-connector", "Subnets": [ "subnet-a", "subnet-b", "subnet-c" ], "SecurityGroups": [ "sg-1", "sg-2" ] } EOF aws apprunner create-vpc-connector \ --cli-input-json file:///vpc-connector.json cat > service.json <<EOF { "ServiceName": "my-vpc-connected-service", "SourceConfiguration": { "ImageRepository": { "ImageIdentifier": "<ecr-image-identifier> ", "ImageConfiguration": { "Port": "8000" }, "ImageRepositoryType": "ECR" } }, "NetworkConfiguration": { "EgressConfiguration": { "EgressType": "VPC", "VpcConnectorArn": "arn:aws:apprunner:..../my-vpc-connector" } } } EOF aws apprunner create-service \ --cli-input-json file:///service.js