在 CloudWatch Synthetics 金丝雀中使用依赖项 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 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 依赖项;要了解基于金丝雀打包结构的检查机制,请参阅编写金丝雀脚本