本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在本機測試 Canary
本節說明如何直接在Microsoft Visual Studio程式碼編輯器或JetBrains IDE程式碼編輯器中修改、測試和偵錯 CloudWatch Synthetics Canary。本機偵錯環境使用無伺服器應用程式模型 (SAM) 容器模擬 Lambda 函數來模擬 Synthetics Canary 的行為。
注意
執行依賴視覺化監控的本機偵錯 Canary 並不切實際。視覺化監控依賴於在初始執行期間擷取基礎螢幕擷取畫面,然後將這些螢幕擷取畫面與後續執行的螢幕擷取畫面進行比較。在本機開發環境中,不會儲存或追蹤執行,而且每個反覆運算都是獨立的獨立執行。如果沒有 Canary 執行歷史記錄,就無法實際偵錯依賴視覺化監控的 Canary。
先決條件
選擇或建立 Amazon S3 儲存貯體,以用於存放本機 Canary 測試執行中的成品,例如 HAR 檔案和螢幕擷取畫面。這需要您使用 IAM 佈建。如果您略過設定 Amazon S3 儲存貯體,您仍然可以在本機測試 Canary,但您將會看到有關遺失儲存貯體的錯誤訊息,而且您將無法存取 Canary 成品。
如果您使用 Amazon S3 儲存貯體,我們建議您將儲存貯體生命週期設定為幾天後刪除物件,以節省成本。如需詳細資訊,請參閱管理儲存生命週期。
為 AWS 您的帳戶設定預設 AWS 設定檔。如需詳細資訊,請參閱組態和登入資料檔案設定。
將偵錯環境的預設 AWS 區域設定為您偏好的區域,例如
us-west-2
。安裝 AWS SAM CLI。如需詳細資訊,請參閱安裝 AWS SAM CLI。
安裝 Visual Studio Code Editor或 JetBrains IDE。如需詳細資訊,請參閱 Visual Studio Code
或 JetBrains IDE 安裝 Docker 以使用 AWS SAM CLI。請務必啟動 docker 協助程式。如需詳細資訊,請參閱安裝 Docker 以搭配 CLI AWS SAM 使用。
或者,您可以安裝其他容器管理軟體,例如 Rancher,只要它使用Docker執行期即可。
為偏好的編輯器安裝 AWS 工具組擴充功能。如需詳細資訊,請參閱安裝 AWS Toolkit for Visual Studio Code或安裝 AWS Toolkit for JetBrains。
主題
設定測試和偵錯環境
首先,輸入下列命令來複製 AWS 提供的 Github 儲存庫。儲存庫包含 Node.js Canary 和 Python Canary 的程式碼範例。
git clone https://github.com/aws-samples/synthetics-canary-local-debugging-sample.git
然後,根據 Canary 的語言執行下列其中一項操作。
對於 Node.js Canary
輸入下列命令,前往 Node.js Canary 來源目錄。
cd synthetics-canary-local-debugging-sample/nodejs-canary/src
輸入下列命令來安裝 Canary 相依性。
npm install
對於 Python Canary
輸入下列命令,前往 Python Canary 來源目錄。
cd synthetics-canary-local-debugging-sample/python-canary/src
輸入下列命令來安裝 Canary 相依性。
pip3 install -r requirements.txt -t .
使用 Visual Studio Code IDE
Visual Studio 啟動組態檔案位於 .vscode/launch.json
。它包含允許 V isual Studio程式碼探索範本檔案的組態。它使用必要的參數定義 Lambda 承載,以成功叫用 Canary。以下是 Node.js Canary 的啟動組態:
{ ... ... "lambda": { "payload": { "json": { // Canary name. Provide any name you like. "canaryName": "LocalSyntheticsCanary", // Canary artifact location "artifactS3Location": { "s3Bucket": "cw-syn-results-123456789012-us-west-2", "s3Key": "local-run-artifacts", }, // Your canary handler name "customerCanaryHandlerName": "heartbeat-canary.handler" } }, // Environment variables to pass to the canary code "environmentVariables": {} } } ] }
您也可以選擇性地在承載 JSON 中提供下列欄位:
s3EncryptionMode
有效值:SSE_S3
|SSE_KMS
s3KmsKeyArn
有效值:KMS 金鑰 ARN
activeTracing
有效值:true
|false
canaryRunId
有效值:如果啟用主動追蹤,則需要UUID
此參數。
若要偵錯 中的 CanaryVisual Studio,請在您要暫停執行的 Canary 程式碼中新增中斷點。若要新增中斷點,請選擇編輯器邊界,然後在編輯器中前往執行和偵錯模式。按一下播放按鈕執行 Canary。當 Canary 執行時,日誌會在偵錯主控台中結尾,為您提供 Canary 行為的即時洞見。如果您新增中斷點, Canary 執行會在每個中斷點暫停,讓您逐步檢查程式碼並檢查變數值、執行個體方法、物件屬性和函數呼叫堆疊。
除了存放在 Amazon S3 儲存貯體中的成品以及每次本機執行所產生的 CloudWatch 指標之外,在本機執行和偵錯 Canary 不會產生任何成本。

使用 JetBrains IDE
安裝 AWS Toolkit for JetBrains 延伸模組後,如果您要對 Node.js Canary 進行偵錯,請確定已啟用 Node.js 外掛程式和 JavaScript debugger 來執行。然後請遵循下列步驟。
使用 偵錯 Canary JetBrains IDE
在 的左側導覽窗格中JetBrains IDE,選擇 Lambda,然後選擇本機組態範本。
輸入執行組態的名稱,例如
LocalSyntheticsCanary
選擇從範本,在範本欄位中選擇檔案瀏覽器,然後從專案中選擇 template.yml 檔案,從 nodejs 目錄或 python 目錄。
在輸入區段中,輸入 Canary 的承載,如下畫面所示。
{ "canaryName": "LocalSyntheticsCanary", "artifactS3Location": { "s3Bucket": "cw-syn-results-123456789012-us-west-2", "s3Key": "local-run-artifacts" }, "customerCanaryHandlerName": "heartbeat-canary.handler" }
您也可以在承載 JSON 中設定其他環境變數,如 所列使用 Visual Studio Code IDE。

使用 SAM CLI 在本機執行 Canary
使用下列其中一個程序,使用 Serverless Application Model (SAM) CLI 在本機執行 Canary。請務必在 s3Bucket
中指定您自己的 Amazon S3 儲存貯體名稱 event.json
使用 SAM CLI 執行 Node.js Canary
輸入下列命令以前往來源目錄。
cd synthetics-canary-local-debugging-sample/nodejs-canary
輸入下列命令:
sam build sam local invoke -e ../event.json
使用 SAM CLI 執行 Python Canary
輸入下列命令以前往來源目錄。
cd synthetics-canary-local-debugging-sample/python-canary
輸入下列命令:
sam build sam local invoke -e ../event.json
將本機測試環境整合至現有的 Canary 套件
您可以透過複製三個檔案,將本機 Canary 除錯整合至現有的 Canary 套件:
將
template.yml
檔案複製到 Canary 套件根目錄。請務必修改 的路徑CodeUri
,以指向存在 Canary 程式碼的目錄。如果您使用的是 Node.js Canary,請將
cw-synthetics.js
檔案複製到 Canary 來源目錄。如果您使用的是 Python Canary,請將 複製到cw-synthetics.py
Canary 來源目錄。將啟動組態檔案 .
vscode/launch.json
複製到套件根目錄。請務必將其放入.vscode
目錄中;如果它不存在,請建立它。
變更 CloudWatch Synthetics 執行時間
在偵錯過程中,您可能想要嘗試使用不同的 CloudWatch Synthetics 執行時間執行 Canary,而不是最新的執行時間。若要這樣做,請從下列其中一個資料表尋找您要使用的執行期。請務必選取正確區域的執行時間。然後將該執行時間的 ARN 貼到template.yml
檔案中的適當位置,然後執行 Canary。
Node.js 執行時間
syn-nodejs-puppeteer-7.0 ARNs
下表列出用於每個可用 AWS 區域中 CloudWatch Synthetics 執行時間syn-nodejs-puppeteer-7.0
版本的 ARNs。
區域 | ARN |
---|---|
美國東部 (維吉尼亞北部) |
|
美國東部 (俄亥俄) |
|
美國西部 (加利佛尼亞北部) |
|
美國西部 (奧勒岡) |
|
非洲 (開普敦) |
|
亞太區域 (香港) |
|
亞太區域 (海德拉巴) |
|
亞太區域 (雅加達) |
|
亞太區域 (墨爾本) |
|
亞太區域 (孟買) |
|
亞太區域 (大阪) |
|
亞太區域 (首爾) |
|
亞太區域 (新加坡) |
|
亞太區域 (雪梨) |
|
亞太區域 (東京) |
|
加拿大 (中部) |
|
加拿大西部 (卡加利) |
|
中國 (北京) |
|
中國 (寧夏) |
|
歐洲 (法蘭克福) |
|
歐洲 (愛爾蘭) |
|
歐洲 (倫敦) |
|
歐洲 (米蘭) |
|
Europe (Paris) |
|
歐洲 (西班牙) |
|
歐洲 (斯德哥爾摩) |
|
歐洲 (蘇黎世) |
|
以色列 (特拉維夫) |
|
Middle East (Bahrain) |
|
中東 (阿拉伯聯合大公國) |
|
南美洲 (聖保羅) |
|
AWS GovCloud (美國東部) |
|
AWS GovCloud (美國西部) |
|
syn-nodejs-puppeteer-6.2 ARNs
下表列出用於每個可用 AWS 區域中 CloudWatch Synthetics 執行時間syn-nodejs-puppeteer-6.2
版本的 ARNs。
區域 | ARN |
---|---|
美國東部 (維吉尼亞北部) |
|
美國東部 (俄亥俄) |
|
美國西部 (加利佛尼亞北部) |
|
美國西部 (奧勒岡) |
|
非洲 (開普敦) |
|
亞太區域 (香港) |
|
亞太區域 (海德拉巴) |
|
亞太區域 (雅加達) |
|
亞太區域 (墨爾本) |
|
亞太區域 (孟買) |
|
亞太區域 (大阪) |
|
亞太區域 (首爾) |
|
亞太區域 (新加坡) |
|
亞太區域 (雪梨) |
|
亞太區域 (東京) |
|
加拿大 (中部) |
|
加拿大西部 (卡加利) |
|
中國 (北京) |
|
中國 (寧夏) |
|
歐洲 (法蘭克福) |
|
歐洲 (愛爾蘭) |
|
歐洲 (倫敦) |
|
歐洲 (米蘭) |
|
Europe (Paris) |
|
歐洲 (西班牙) |
|
歐洲 (斯德哥爾摩) |
|
歐洲 (蘇黎世) |
|
以色列 (特拉維夫) |
|
Middle East (Bahrain) |
|
中東 (阿拉伯聯合大公國) |
|
南美洲 (聖保羅) |
|
AWS GovCloud (美國東部) |
|
AWS GovCloud (美國西部) |
|
syn-nodejs-puppeteer-5.2 ARNs
下表列出每個可用 AWS 區域中用於 CloudWatch Synthetics 執行時間syn-nodejs-puppeteer-5.2
版本的 ARNs。
區域 | ARN |
---|---|
美國東部 (維吉尼亞北部) |
|
美國東部 (俄亥俄) |
|
美國西部 (加利佛尼亞北部) |
|
美國西部 (奧勒岡) |
|
非洲 (開普敦) |
|
亞太區域 (香港) |
|
亞太區域 (海德拉巴) |
|
亞太區域 (雅加達) |
|
亞太區域 (墨爾本) |
|
亞太區域 (孟買) |
|
亞太區域 (大阪) |
|
亞太區域 (首爾) |
|
亞太區域 (新加坡) |
|
亞太區域 (雪梨) |
|
亞太區域 (東京) |
|
加拿大 (中部) |
|
加拿大西部 (卡加利) |
|
中國 (北京) |
|
中國 (寧夏) |
|
歐洲 (法蘭克福) |
|
歐洲 (愛爾蘭) |
|
歐洲 (倫敦) |
|
歐洲 (米蘭) |
|
Europe (Paris) |
|
歐洲 (西班牙) |
|
歐洲 (斯德哥爾摩) |
|
歐洲 (蘇黎世) |
|
以色列 (特拉維夫) |
|
Middle East (Bahrain) |
|
中東 (阿拉伯聯合大公國) |
|
南美洲 (聖保羅) |
|
AWS GovCloud (美國東部) |
|
AWS GovCloud (美國西部) |
|
Python 執行時間
syn-python-selenium-3.0 ARNs
下表列出要在每個可用 AWS 區域中用於 CloudWatch Synthetics 執行時間syn-python-selenium-3.0
版本的 ARNs。
區域 | ARN |
---|---|
美國東部 (維吉尼亞北部) |
|
美國東部 (俄亥俄) |
|
美國西部 (加利佛尼亞北部) |
|
美國西部 (奧勒岡) |
|
非洲 (開普敦) |
|
亞太區域 (香港) |
|
亞太區域 (海德拉巴) |
|
亞太區域 (雅加達) |
|
亞太區域 (墨爾本) |
|
亞太區域 (孟買) |
|
亞太區域 (大阪) |
|
亞太區域 (首爾) |
|
亞太區域 (新加坡) |
|
亞太區域 (雪梨) |
|
亞太區域 (東京) |
|
加拿大 (中部) |
|
加拿大西部 (卡加利) |
|
中國 (北京) |
|
中國 (寧夏) |
|
歐洲 (法蘭克福) |
|
歐洲 (愛爾蘭) |
|
歐洲 (倫敦) |
|
歐洲 (米蘭) |
|
Europe (Paris) |
|
歐洲 (西班牙) |
|
歐洲 (斯德哥爾摩) |
|
歐洲 (蘇黎世) |
|
以色列 (特拉維夫) |
|
Middle East (Bahrain) |
|
中東 (阿拉伯聯合大公國) |
|
南美洲 (聖保羅) |
|
AWS GovCloud (美國東部) |
|
AWS GovCloud (美國西部) |
|
syn-python-selenium-2.1 ARNs
下表列出要在每個可用 AWS 區域中用於 CloudWatch Synthetics 執行時間syn-python-selenium-2.1
版本的 ARNs。
區域 | ARN |
---|---|
美國東部 (維吉尼亞北部) |
|
美國東部 (俄亥俄) |
|
美國西部 (加利佛尼亞北部) |
|
美國西部 (奧勒岡) |
|
非洲 (開普敦) |
|
亞太區域 (香港) |
|
亞太區域 (海德拉巴) |
|
亞太區域 (雅加達) |
|
亞太區域 (墨爾本) |
|
亞太區域 (孟買) |
|
亞太區域 (大阪) |
|
亞太區域 (首爾) |
|
亞太區域 (新加坡) |
|
亞太區域 (雪梨) |
|
亞太區域 (東京) |
|
加拿大 (中部) |
|
加拿大西部 (卡加利) |
|
中國 (北京) |
|
中國 (寧夏) |
|
歐洲 (法蘭克福) |
|
歐洲 (愛爾蘭) |
|
歐洲 (倫敦) |
|
歐洲 (米蘭) |
|
Europe (Paris) |
|
歐洲 (西班牙) |
|
歐洲 (斯德哥爾摩) |
|
歐洲 (蘇黎世) |
|
以色列 (特拉維夫) |
|
Middle East (Bahrain) |
|
中東 (阿拉伯聯合大公國) |
|
南美洲 (聖保羅) |
|
AWS GovCloud (美國東部) |
|
AWS GovCloud (美國西部) |
|
常見錯誤
錯誤:在本機執行 AWS SAM 專案需要 Docker。是否已安裝並執行?
請務必Docker在電腦上啟動 。
SAM 本機調用失敗:呼叫 GetLayerVersion 操作時發生錯誤 (ExpiredTokenException):請求中包含的安全字符已過期
確定已設定 AWS 預設設定檔。
更常見的錯誤
如需 SAM 常見錯誤的詳細資訊,請參閱 AWS SAM CLI 故障診斷 。