@aws-cdk/aws-synthetics-alpha

中文文档
2.101.1-alpha.0发布于 2023/10/17Apache-2.0TypeScriptCommonJS零依赖近 30 天下载 2.2万

此模块被贬值. 所有构造现在都可以在aws-cdk-lib/aws-synthetics下使用

此软件包已被标记为弃用

This package has been stabilized and moved to aws-cdk-lib

中文使用文档
文档目录7 节
  1. 加那利语Name
  2. 加那利计划
  3. 删除金丝雀上的相关资源
  4. 配置 Canary 脚本
  5. 在VPC上开金丝雀
  6. 警报
  7. 艺术品

亚马逊云表合成库


Deprecated

此API 可能会发出警告 。 后向兼容性没有保证 .


所有构造都被移动到aws-cdk-lib/aws-synthetics.

Amazon Cloud Watch 合成器允许您通过生成来监视您的应用程序 合成 堵车 交通是由一个 金丝雀:一个按时间表运行的可配置的脚本. 您配置了金丝雀脚本以遵循相同的路径, 并进行与用户相同的动作, 这使得您可以不断验证您的用户体验, 即使您的应用程序没有任何流量 .

加那利语Name

为了说明如何使用金丝雀,假设您的应用定义了以下终点:

% curl "https://api.example.com/user/books/topbook/"
The Hitchhikers Guide to the Galaxy

下面的代码定义了一只金丝雀,它会击中 books/topbook 每5分钟结束点 :

const canary = new synthetics.Canary(this, 'MyCanary', {
  schedule: synthetics.Schedule.rate(Duration.minutes(5)),
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')),
    handler: 'index.handler',
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_4_0,
  environmentVariables: {
    stage: 'prod',
  },
});

以下是一个实例: index.js 用于导出 handler 函数 :

const synthetics = require('Synthetics');
const log = require('SyntheticsLogger');

const pageLoadBlueprint = async function () {
  // Configure the stage of the API using environment variables
  const url = `https://api.example.com/${process.env.stage}/user/books/topbook/`;

  const page = await synthetics.getPage();
  const response = await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
  // Wait for page to render. Increase or decrease wait time based on endpoint being monitored.
  await page.waitFor(15000);
  // This will take a screenshot that will be included in test output artifacts.
  await synthetics.takeScreenshot('loaded', 'loaded');
  const pageTitle = await page.title();
  log.info('Page title: ' + pageTitle);
  if (response.status() !== 200) {
    throw 'Failed to load page!';
  }
};

exports.handler = async () => {
  return await pageLoadBlueprint();
};

说明: 职能 必须 调用 handler。 。 。 .

金丝雀会自动生产出"云表"Dashboard:

UI Screenshot

加那利代码将在合成人代表您创建的羊肉达函数中被执行. Lambda 函数包括一个自定义 运行时间 由合成人提供。 所提供的运行时间包括各种工具,例如: 傀儡 (对于以节点为基础的一个)和铬.

为了更多地了解合成能力,请检查 文档。 。 。 .

加那利计划

您可以指定一个金丝雀运行的时间表 提供一个 Schedule 对象 schedule 属性.

配置最多60分钟的运行速度 Schedule.rate数字 :

const schedule = synthetics.Schedule.rate(Duration.minutes(5)); // Runs every 5 minutes.

您也可以指定 cron 表达式 与 Schedule.cron数字 :

const schedule = synthetics.Schedule.cron({
  hour: '0,8,16', // Run at 12am, 8am, 4pm UTC every day
});

如果你想让金丝雀在部署时运行一次 你可以使用 Schedule.once()。 。 。 .

删除金丝雀上的相关资源

当您删除一个 lambda 时, 您的 AWS 账户中将隔离以下基本资源 :

  • 运行您金丝雀脚本的 Lambda 函数
  • 用于保存文物的S3桶
  • IAM的作用和政策
  • 云表日志中的日志组 .

要更多地了解这些基本资源,见: 合成动画。 。 。 .

在 CCDK 中,您可以配置您的金丝雀来删除金丝雀被删除时隐藏的羊肉达函数. 这可以通过设置来提供 cleanup: Cleanup.LAMBDA。注意这一点 将会在引擎盖下创建自定义资源, 为您处理 lambda 删除 .

const canary = new synthetics.Canary(this, 'Canary', {
  test: synthetics.Test.custom({
    handler: 'index.handler',
    code: synthetics.Code.fromInline('/* Synthetics handler code'),
  }),
  cleanup: synthetics.Cleanup.LAMBDA,
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_4_0,
});

注意: 要正确清理删除时的金丝雀, 您仍需要手动删除其他资源 像S3桶和云表记录.

配置 Canary 脚本

要配置金丝雀执行的脚本,请使用 test 属性。 这个 test 属性接受 a Test 可初始化的示例 Test 类静态方法. 目前,唯一采用的方法是 Test.custom(),它允许你带来自己的代码。 将来会增加其他方法. Test.custom() 接受 code 财务报告和审定财务报表 handler 属性 - 两者都被合成器要求为您创建羊肉达函数.

这个 synthetics.Code 班级会暴露静态方法 来捆绑您的密码文物:

  • code.fromInline(code) - 指定内在脚本.
  • code.fromAsset(path) - 指定 .zip 文件或本地文件系统中的目录,在部署时将其拉链并上传到 S3 。 关于目录结构,见上文注释.
  • code.fromBucket(bucket, key[, objectVersion]) - 指定包含您运行时代码的.zip文件的 S3 对象 。 关于目录结构,见上文注释.

使用 Code 类静态初始器 :

// To supply the code inline:
new synthetics.Canary(this, 'Inline Canary', {
  test: synthetics.Test.custom({
    code: synthetics.Code.fromInline('/* Synthetics handler code */'),
    handler: 'index.handler', // must be 'index.handler'
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_4_0,
});

// To supply the code from your local filesystem:
new synthetics.Canary(this, 'Asset Canary', {
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')),
    handler: 'index.handler', // must end with '.handler'
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_4_0,
});

// To supply the code from a S3 bucket:
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = new s3.Bucket(this, 'Code Bucket');
new synthetics.Canary(this, 'Bucket Canary', {
  test: synthetics.Test.custom({
    code: synthetics.Code.fromBucket(bucket, 'canary.zip'),
    handler: 'index.handler', // must end with '.handler'
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_4_0,
});

说明: 合成器有指定用于金丝雀的文件夹结构. 对于通过下列方式提供的节点脚本: code.fromAsset() 或者说 code.fromBucket(),金丝雀资源需要以下文件夹结构:

canary/
├── nodejs/
   ├── node_modules/
        ├── <filename>.js

对于通过 Python 脚本提供 code.fromAsset() 或者说 code.fromBucket(),金丝雀资源需要以下文件夹结构:

canary/
├── python/
    ├── <filename>.py

见合成 文档。 。 。 .

在VPC上开金丝雀

您可以指定什么 VPC 一个金丝雀在。 。 。 . 这可以使监测服务成为具体的《维也纳公约》的一部分。 要在VPC内放置金丝雀,您可以指定 vpc 有理想财产 VPC 把金丝雀放进去. 这将自动附加相应的IAM权限,附入VPC. 这将创建一个安全小组,并附加到VPC的默认子网上,除非通过 vpcSubnets 财务报告和审定财务报表 securityGroups。 。 。 .

import * as ec2 from 'aws-cdk-lib/aws-ec2';

declare const vpc: ec2.IVpc;
new synthetics.Canary(this, 'Vpc Canary', {
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')),
    handler: 'index.handler',
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_4_0,
  vpc,
});

说明: 默认情况下,Synthetics运行时间需要访问S3和Cloud Watch API,在没有启用互联网接入的私人子网(如被隔离的子网)中会失败.

确保加那利号安装在具有互联网连接的VPC或与S3和Cloud Watch的VPC端点进行启用和配置.

见 合成 VPC 文件。 。 。 .

警报

您可以在金丝雀上配置 Cloud Watch 提醒 。 度量衡由Cloud Watch自动发布,以下API可以访问:

  • canary.metricSuccessPercent() - 成功金丝雀在一定时间内运行的百分比
  • canary.metricDuration() 每只金丝雀运行需要多少时间,几秒钟.
  • canary.metricFailed() - 失败的金丝雀数量在某一时间运行

创建一个跟踪金丝雀度量的提醒 :

import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';

declare const canary: synthetics.Canary;
new cloudwatch.Alarm(this, 'CanaryAlarm', {
  metric: canary.metricSuccessPercent(),
  evaluationPeriods: 2,
  threshold: 90,
  comparisonOperator: cloudwatch.ComparisonOperator.LESS_THAN_THRESHOLD,
});

艺术品

你可以通过一个S3桶 从金丝雀跑道储存文物。 如果你没有, 当金丝雀创建时,它会自动生成。 您可以添加 生命周期规则 到自动生成的桶.

const canary = new synthetics.Canary(this, 'MyCanary', {
  schedule: synthetics.Schedule.rate(Duration.minutes(5)),
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')),
    handler: 'index.handler',
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_4_0,
  artifactsBucketLifecycleRules: [{
    expiration: Duration.days(30),
  }],
});

版本与发布记录

@aws-cdk/aws-synthetics-alpha 共发布 148 个版本,首次发布于 2021/10/14;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.101.1-alpha.0latest2023/10/173 年前
2.101.0-alpha.02023/10/143 年前
2.100.0-alpha.02023/10/073 年前
2.98.0-alpha.02023/09/273 年前
2.97.1-alpha.02023/09/263 年前
2.97.0-alpha.02023/09/233 年前

关于 @aws-cdk/aws-synthetics-alpha 的常见问题

@aws-cdk/aws-synthetics-alpha 是什么?

此模块被贬值. 所有构造现在都可以在aws-cdk-lib/aws-synthetics下使用注意:该包已被作者标记为弃用——This package has been stabilized and moved to aws-cdk-lib

如何安装 @aws-cdk/aws-synthetics-alpha?

在项目目录运行 npm install @aws-cdk/aws-synthetics-alpha,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:aws-cdk-lib(^2.101.1)、constructs(^10.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-cdk/aws-synthetics-alpha 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-cdk/aws-synthetics-alpha 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-cdk/aws-synthetics-alpha 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 14.15.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-cdk/aws-synthetics-alpha 可以商用吗?

@aws-cdk/aws-synthetics-alpha 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-cdk/aws-synthetics-alpha 的下载量有多少?

根据 npm 官方下载统计,@aws-cdk/aws-synthetics-alpha 在 2026/10/08 – 2026/11/06 这 30 天内被下载 21,647 次,日均约 722 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-cdk/aws-synthetics-alpha 还在维护吗?

最新版本 2.101.1-alpha.0 发布于 2023/10/17(3 年前);至今共发布 148 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/10/14。作者已将其标记为弃用,新项目建议寻找替代方案。