在 CloudWatch Synthetics 金丝雀中使用依赖项
本节将介绍如何在 CloudWatch Synthetics 金丝雀中使用 Dependencies。通过 Dependencies 字段可为金丝雀指定依赖项,从而添加金丝雀脚本可以使用的其他库或自定义代码。
概览
CloudWatch Synthetics 金丝雀支持将 Lambda 层指定为依赖项。此功能有助实现以下目标:
-
跨多个金丝雀共享公共代码
-
独立管理依赖项与金丝雀脚本
-
将依赖项移至 Lambda 层来精简金丝雀脚本体积
支持的 API
以下 API 支持 Dependencies 字段:
语法
Dependencies 字段是请求语法中代码结构的一部分:
"Code": { "Handler": "string", "S3Bucket": "string", "S3Key": "string", "S3Version": "string", "ZipFile": blob, "Dependencies": [ { "Type": "LambdaLayer", "Reference": "string" } ] }
使用依赖项
以下是在不同场景中使用 Dependencies 字段的一些示例和说明。
创建带依赖项的金丝雀
创建金丝雀时,可将 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" }
更新金丝雀的依赖项
使用 UpdateCanary API 可更新金丝雀的依赖项:
{ "Name": "my-canary", "Code": { "Dependencies": [ { "Type": "LambdaLayer", "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-updated-layer:2" } ] } }
删除依赖项
要从金丝雀中删除依赖项,只需将 Dependencies 字段指定为空数组:
{ "Name": "my-canary", "Code": { "Dependencies": [] } }
使用 StartCanaryDryRun 测试依赖项
在更新金丝雀的新依赖项前,可使用 StartCanaryDryRun API 进行测试:
{ "Name": "my-canary", "Code": { "Dependencies": [ { "Type": "LambdaLayer", "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-test-layer:3" } ] } }
限制和注意事项
-
只能指定一个 Lambda 层作为依赖项
创建带依赖项的金丝雀时,所用角色除必要角色和权限外,还应具有能访问依赖项层的
lambda:GetLayerVersion权限
创建兼容的 Lambda 层
有关创建和打包 Lambda 层的具体方法,请参阅使用层管理 Lambda 依赖项;要了解基于金丝雀打包结构的检查机制,请参阅编写金丝雀脚本。