本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設計考量
本節說明 AWS 上分散式負載測試解決方案的重要設計決策和組態選項,包括支援的應用程式、測試類型、排程選項和部署考量。
支援的應用程式
只要您有從 AWS 帳戶到應用程式的網路連線,此解決方案支援測試雲端型應用程式和內部部署應用程式。解決方案支援使用 HTTP 或 HTTPS 通訊協定APIs。
測試類型
AWS 上的分散式負載測試支援多種測試類型:簡易 HTTP 端點測試、JMeter、K6 和 Locust。
注意
解決方案會將 JMeter、K6 和 Locust 分發為第三方元件,無需修改。如需安全性考量、修補選項和授權資訊,請參閱第三方測試架構。
簡單 HTTP 端點測試
Web 主控台提供 HTTP 端點組態介面,可讓您測試任何 HTTP 或 HTTPS 端點,而無需撰寫自訂指令碼。您可以定義端點 URL,從下拉式選單中選取 HTTP 方法 (GET、POST、PUT、DELETE 等),並選擇性地新增自訂請求標頭和內文承載。此組態可讓您使用自訂授權字符、內容類型,或應用程式所需的任何其他 HTTP 標頭和請求內文來測試 APIs。
當您設定 HTTP 端點時,解決方案會將您的組態轉換為由綁定 Apache JMeter 二進位檔透過 Taurus 架構執行的測試計劃。簡單 HTTP 端點測試不接受測試封存,因此無法覆寫綁定的 JMeter 二進位檔或外掛程式。如果您需要使用修補的 JMeter 執行 HTTP 端點測試,請改用 JMeter 測試類型。如需安全性考量,請參閱 Apache JMeter。
JMeter 測試
使用 Web 主控台建立測試案例時,您可以上傳 JMeter 測試指令碼。解決方案會將指令碼上傳至案例 S3 儲存貯體。當 Amazon ECS 任務執行時,他們會從 S3 下載 JMeter 指令碼並執行測試。
重要
雖然您的 JMeter 指令碼可能會定義並行 (虛擬使用者)、交易速率 (TPS)、漸進測試時間和其他載入參數,但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 (每個任務的虛擬使用者)、漸進測試持續時間和保留持續時間。
如果您有 JMeter 輸入檔案,您可以將輸入檔案與 JMeter 指令碼一起壓縮。您可以在建立測試案例時選擇 zip 檔案。
如果您想要包含外掛程式,則套件 zip 檔案中包含在 /plugins 子目錄中的任何 .jar 檔案都會複製到 JMeter 擴充功能目錄,並可用於負載測試。
注意
如果您在 JMeter 指令碼檔案中包含 JMeter 輸入檔案,則必須在 JMeter 指令碼檔案中包含輸入檔案的相對路徑。此外,輸入檔案必須位於相對路徑。例如,當您的 JMeter 輸入檔案和指令碼檔案位於 /home/user 目錄中,而您參考 JMeter 指令碼檔案中的輸入檔案時,輸入檔案的路徑必須為 。/INPUT_FILES。如果您改為使用 /home/user/INPUT_FILES,則測試將會失敗,因為它將無法找到輸入檔案。
如果您包含 JMeter 外掛程式,則必須將 .jar 檔案封裝在 zip 檔案根目錄中名為 /plugins 的子目錄中。相對於 zip 檔案的根目錄,jar 檔案的路徑必須是 ./plugins/BUNDLED_PLUGIN.jar。
如需如何使用 JMeter 指令碼的詳細資訊,請參閱 JMeter 使用者手冊
K6 測試
解決方案支援 K6 架構型測試。您可以在封存檔案中上傳 K6 測試檔案以及任何必要的輸入檔案。當您建立新的 K6 測試時,Web 主控台會顯示授權確認訊息;如需授權和安全性詳細資訊,請參閱 Grafana K6。
重要
雖然 K6 指令碼可能會定義並行 (虛擬使用者)、階段、閾值和其他負載參數,但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 (每個任務的虛擬使用者)、漸進測試持續時間和保留持續時間。
Locust 測試
解決方案支援 Locust 架構型測試。您可以在封存檔案中上傳 Locust 測試檔案以及任何必要的輸入檔案。
重要
雖然您的 Locust 指令碼可能會定義並行 (使用者計數)、產生率和其他負載參數,但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 (每個任務的虛擬使用者)、漸進測試持續時間和保留持續時間。
排程測試
解決方案提供三種執行負載測試的執行時間選項:
-
立即執行 - 建立後立即執行載入測試
-
執行一次 - 在未來的特定日期和時間執行測試
-
在排程上執行 - 使用 Cron 表達式建立週期性測試來定義排程
選取執行一次時,您會以 24 小時格式指定執行時間,以及負載測試應開始執行的執行日期。
當您選取在排程上執行時,您可以手動輸入 Cron 表達式或從常見的 Cron 模式選取 (例如每小時、每天特定時間、工作日或每月)。Cron 表達式使用精細的排程格式,其中包含分鐘、小時、月中的日、月、週中的日和年的欄位。您也必須指定過期日期,以定義排程測試何時應停止執行。如需排程如何運作的詳細資訊,請參閱本指南的測試排程工作流程一節。
注意
-
測試持續時間:在排程時考慮測試的總持續時間。例如,具有 10 分鐘漸進測試時間和 40 分鐘保留時間的測試大約需要 80 分鐘才能完成。
-
最短間隔:確保排程測試之間的間隔長於預估測試持續時間。例如,如果測試大約需要 80 分鐘,請將其排程為每 3 小時執行一次。
-
每小時限制:系統不允許只以一小時的差異來排程測試,即使預估測試持續時間少於一小時。
並行測試
此解決方案會為每個測試建立 Amazon CloudWatch 儀表板,以即時顯示 Amazon ECS 叢集中執行之所有任務的合併輸出。CloudWatch 儀表板會顯示平均回應時間、並行使用者數、成功請求數和失敗請求數。解決方案會依秒彙總每個指標,並每分鐘更新儀表板。
使用者管理
在初始組態期間,您會提供 Amazon Cognito 用來授予您存取解決方案 Web 主控台的使用者名稱和電子郵件地址。主控台不提供使用者管理。若要新增其他使用者,您必須使用 Amazon Cognito 主控台。如需詳細資訊,請參閱《Amazon Cognito 開發人員指南》中的在使用者集區中管理使用者。
如需將現有使用者遷移至 Amazon Cognito 使用者集區,請參閱 AWS 部落格方法,以將使用者遷移至 Amazon Cognito 使用者集區
身分提供者聯合
解決方案的 Amazon Cognito 使用者集區支援使用 SAML 2.0 或 OpenID Connect (OIDC) 通訊協定與外部身分提供者 (IdPs) 聯合。聯合允許使用者使用現有的公司或組織登入資料登入 Web 主控台,而不是 Cognito 原生登入資料。聯合身分使用者會收到與直接在 Cognito 使用者集區中建立的使用者相同的存取許可。
解決方案已部署 Cognito 使用者集區、網域、應用程式用戶端和託管 UI。若要啟用聯合,您只需註冊身分提供者,並在現有的應用程式用戶端上啟用。
如果您部署選用的 MCP 伺服器整合,聯合身分使用者也可以使用相同的 Cognito 使用者集區登入資料來存取 MCP 伺服器。
先決條件
在設定聯合之前,您需要下列項目:
-
支援 SAML 2.0 或 OIDC 的外部身分提供者
-
設定外部 IdP 的管理員存取權 (設定重新導向 URIs或 ACS URLs)
-
解決方案的 Cognito 使用者集區 ID (可在 CloudFormation 堆疊資源或 Amazon Cognito 主控台中取得)
-
解決方案的 Cognito 網域字首 (可在 CloudFormation 堆疊輸出或應用程式整合 > 網域下的 Cognito 主控台中使用)
步驟 1:設定您的身分提供者
使用下列值設定外部身分提供者,以便與解決方案的 Cognito 使用者集區通訊。
對於 SAML 身分提供者:
-
SP 實體 ID:
urn:amazon:cognito:sp:_<UserPoolId>_ -
ACS URL:
\https://<cognito-domain>.auth.<region>.amazoncognito.com/saml2/idpresponse
對於 OIDC 身分提供者:
-
重新導向 URI:
\https://<cognito-domain>.auth.<region>.amazoncognito.com/oauth2/idpresponse
如需有關 IdP 需求的詳細資訊,請參閱《Amazon Cognito 開發人員指南》中的將 SAML 身分提供者新增至使用者集區或將 OIDC 身分提供者新增至使用者集區。
步驟 2:在 Cognito 中註冊身分提供者
使用 Amazon Cognito 主控台將外部身分提供者新增至解決方案的現有 Cognito 使用者集區。
如需step-by-step說明,請參閱《Amazon Cognito 開發人員指南》中的透過第三方新增使用者集區登入。
步驟 3:設定屬性映射
設定身分提供者宣告與 Cognito 使用者集區屬性之間的屬性映射。至少,將使用者的電子郵件宣告從外部供應商映射到 Cognito email 屬性。也請考慮映射或您的身分提供者namenickname是否提供它們。
如需說明,請參閱《Amazon Cognito 開發人員指南》中的為您的使用者集區指定身分提供者屬性映射。
步驟 4:在應用程式用戶端上啟用身分提供者
在 Amazon Cognito 主控台中,尋找解決方案建立的應用程式用戶端,並在託管 UI 設定下啟用新的身分提供者。
如需說明,請參閱《Amazon Cognito 開發人員指南》中的設定使用者集區應用程式用戶端。
注意
解決方案已設定應用程式的用戶端回呼和登出 URLs、OAuth 範圍和託管 UI 網域。您不需要修改這些設定,只需在現有的應用程式用戶端上啟用您的身分提供者即可。
重要
解決方案刻意省略 CloudFormation 應用程式用戶端組態中的 SupportedIdentityProviders 屬性。這可讓您在部署後新增身分提供者,而無需觸發 CloudFormation 偏離偵測。如果在範本中設定此屬性,任何透過主控台或 CLI 的手動 IdP 變更都會在下次堆疊更新時遭到覆寫,將應用程式用戶端還原為僅範本中列出的提供者。
由於省略此屬性,CloudFormation 不會追蹤或管理應用程式用戶端上啟用的身分提供者。設定聯合之後,您需負責管理應用程式用戶端SupportedIdentityProviders上的 內容。若要監控未經授權的變更,請啟用 AWS CloudTrail 記錄並建立 Amazon EventBridge 規則,以提醒以解決方案 Cognito 使用者集區為目標的 CreateIdentityProvider和 UpdateUserPoolClient API 呼叫。
注意
-
新增外部身分提供者不會移除現有 Cognito 原生使用者使用其目前憑證登入的能力。
-
聯合身分使用者受到與 Cognito 使用者集區相同的區域可用性限制。如需詳細資訊,請參閱區域部署。
-
先使用一小群使用者測試聯合登入,再將其推展到您的組織。
停用或刪除預設 Cognito 使用者
設定聯合之後,您可能想要停用或刪除在堆疊部署期間建立的預設使用者。這是選用的 — 預設使用者會繼續與聯合登入搭配使用。
若要停用使用者,請在 Amazon Cognito 主控台中導覽至解決方案的 Cognito
如需詳細資訊,請參閱《Amazon Cognito 開發人員指南》中的管理和搜尋使用者帳戶。
區域部署
此解決方案使用 Amazon Cognito,僅適用於特定 AWS 區域。因此,您必須在可使用 Amazon Cognito 的區域部署此解決方案。如需依區域分類的最新服務可用性,請參閱 AWS 區域服務清單