本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 CloudWatch Synthetics Canary 使用相依項
本節說明如何在 CloudWatch Synthetics Canary 中使用 Dependencies。透過 Dependencies 欄位,您可以指定 Canary 的相依項,加入 Canary 指令碼可使用的其他程式庫或自訂程式碼。
概觀
CloudWatch Synthetics Canary 支援將 Lambda 圖層指定為相依項。此功能可讓您:
-
在多個 Canary 之間共用常見程式碼
-
將 Canary 指令碼程式碼與相依項分開管理
-
將相依項移至 Lambda 圖層,以減小 Canary 指令碼
支援的 API
下列 API 支援 Dependencies 欄位:
語法
Dependencies 欄位是請求語法中程式碼結構的一部分:
"Code": { "Handler": "string", "S3Bucket": "string", "S3Key": "string", "S3Version": "string", "ZipFile": blob, "Dependencies": [ { "Type": "LambdaLayer", "Reference": "string" } ] }
使用相依項
以下是在不同情境下使用 Dependencies 欄位的一些範例和說明。
建立具有相依項的 Canary
建立 Canary 時,您可以將 Lambda 圖層指定為相依項:
{ "Name": "my-canary", "Code": { "Handler": "pageLoadBlueprint.handler", "S3Bucket": "my-bucket", "S3Key": "my-canary-script.zip", "Dependencies": [ { "Type": "LambdaLayer", "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-custom-layer:1" } ] }, "ArtifactS3Location": "s3://my-bucket/artifacts/", "ExecutionRoleArn": "arn:aws:iam::123456789012:role/my-canary-role", "Schedule": { "Expression": "rate(5 minutes)" }, "RuntimeVersion": "syn-nodejs-puppeteer-3.9" }
更新 Canary 的相依項
您可以使用 UpdateCanary API 更新 Canary 的相依項:
{ "Name": "my-canary", "Code": { "Dependencies": [ { "Type": "LambdaLayer", "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-updated-layer:2" } ] } }
移除相依項
若要從 Canary 移除相依項,請為相依項欄位提供空陣列:
{ "Name": "my-canary", "Code": { "Dependencies": [] } }
使用 StartCanaryDryRun 測試相依項
使用新的相依項更新 Canary 之前,可以先使用 StartCanaryDryRun API 對其進行測試:
{ "Name": "my-canary", "Code": { "Dependencies": [ { "Type": "LambdaLayer", "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-test-layer:3" } ] } }
限制及考量
-
只能指定一個 Lambda 圖層作為相依項
-
除了必要的角色和許可之外,用來建立具有相依項之 Canary 的角色,還應具備對相依項圖層的
lambda:GetLayerVersion存取權
建立相容的 Lambda 圖層
如需有關如何建立和封裝圖層的資訊,請參閱使用圖層管理 Lambda 相依項;若要根據 Canary 封裝結構了解 Canary 檢查的封裝結構,請參閱撰寫 Canary 指令碼。