AWS Lambda 的动力工具( TypeScript)
用于 AWS Lambda (TypeScript) 的 Powertools 是用于执行无服务器的开发者工具包 最佳做法和增加开发者的速度。 。 。 .
您可以在 TypeScript 和 JavaScript 代码库中使用库.
使用量
库提供一种工具功能,用于向 Cloud Watch 发送度量衡 嵌入式计量格式( EMF)。 。 。 .
要启动, 请通过运行安装库 :
npm i @aws-lambda-powertools/metrics
初始化量子类之后,您可以使用 https://docs.aws.amazon.com/powertools/typescript/latest/core/meters/#创建-度量衡 方法。 测量值存储在缓冲器中,在调用时被冲出 https://docs.aws.amazon.com/powertools/typescript/latest/core/meters/#flushing-meters 互联网档案馆的存檔,存档日期2013-12-12。 。 。 .
每个衡量标准还可以增加维度和元数据.
import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';
const metrics = new Metrics({
namespace: 'serverlessAirline',
serviceName: 'orders',
defaultDimensions: { environment: process.env.ENVIRONMENT },
});
export const handler = async (event: { requestId: string }) => {
metrics.addMetadata('request_id', event.requestId);
metrics.addMetric('successfulBooking', MetricUnit.Count, 1);
metrics.publishStoredMetrics();
};
平流参数
在你完成添加所有度量衡时,需要通过调用来序列化并"冲出" publishStoredMetrics(),它将释放出在嵌入式计量格式(EMF)中显示的度量衡。 然后由Lambda跑道取出 并送往Cloud Watch.
这个 publishStoredMetrics() 方法是同步的,将屏蔽事件循环,直到冲出公制。 如果您想要在 Lambda 函数结束时自动冲出 Metrics, 您可以使用 @logMetrics() 装饰者或 logMetrics() 中间软件.
抓住寒冷的开始作为衡量标准
通过量子,你可以捕捉冷 开始作为度量器,叫 captureColdStartMetric() 方法。 此方法将添加一个带有名称的公尺 ColdStart 和数值 1 到测量缓冲器.
这个度量衡在调用方法时会被自动冲出来,以确保冷起被捕获,无论该度量衡是人工冲出还是自动冲出.
import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';
const metrics = new Metrics({
namespace: 'serverlessAirline',
serviceName: 'orders',
});
export const handler = async (event: { requestId: string }) => {
metrics.captureColdStartMetric();
};
注意,我们不发射 ColdStart 有价值的计量 0 当功能是温暖的, 因为这会导致大量量的度量 排放到Cloud Watch, 所以你需要依赖没有 ColdStart 用于确定该函数是否温暖.
类方法装饰器
如果您正在使用 TypeScript 并适应写作课程, 您可以使用 @logMetrics() 在您 Lambda 函数末端自动冲出度量衡的装饰器, 以及配置额外选项, 如如果没有添加度量衡, 则丢出一个错误, 捕获冷起为度量符, 以及更多 .
import type { Context } from 'aws-lambda';
import type { LambdaInterface } from '@aws-lambda-powertools/commons/types';
import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';
const metrics = new Metrics({
namespace: 'serverlessAirline',
serviceName: 'orders',
});
class Lambda implements LambdaInterface {
@metrics.logMetrics({ captureColdStartMetric: true, throwOnEmptyMetrics: true })
public async handler(event: { requestId: string }, _: Context) {
metrics.addMetadata('request_id', event.requestId);
metrics.addMetric('successfulBooking', MetricUnit.Count, 1);
}
}
const handlerClass = new Lambda();
export const handler = handlerClass.handler.bind(handlerClass);
装饰器是JavaScript的一个第3阶段建议,目前还没有加入ECMAScript标准. 本库中目前的插件是基于由 typeScript 装饰器语法所允许的 experimentalDecorators 旗帜 设置为 true 输入 tsconfig.json 文档.
Middy.js 中间软件
如果您正在使用 中场. js 更喜欢使用中间软件,你可以使用 @logMetrics() 与类方法装饰器相同.
这个 @logMetrics() 中间软件可以使用 Middy.js 在您 Lambda 函数末尾自动冲出度量衡, 并配置额外选项, 如如果不添加度量衡, 扔出一个错误, 捕获冷起为度量衡, 设置默认维度 .
import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';
import { logMetrics } from '@aws-lambda-powertools/metrics/middleware';
import middy from '@middy/core';
const metrics = new Metrics({
namespace: 'serverlessAirline',
serviceName: 'orders',
});
export const handler = middy(async (event) => {
metrics.addMetadata('request_id', event.requestId);
metrics.addMetric('successfulBooking', MetricUnit.Count, 1);
}).use(logMetrics(metrics, {
captureColdStartMetric: true,
throwOnEmptyMetrics: true,
}));
这个 logMetrics() 中间软件兼容 @middy/[email protected] 及以上各点.
贡献
如果你有兴趣为这个项目捐款,请参见我们 贡献准则。 。 。 .
路线图
AWS Lambda(英语:TypeScript)的"Powertools"行进图受顾客需求所驱动.
帮助我们确定未来功能或公用事业的优先次序 更新现有 RFC 和功能请求,或 创建新的,在此 GitHub 仓库中.
连接
- 关于 GitHub 讨论的 AWS Lambda 工具数字 : 加入对话
- 电子邮件数字 : aws-lambda-powertools- [email protected] 互联网档案馆的存檔,存档日期2014-12-21
如何支持 AWS Lambda (TypeScript) 的 Powertools ?
成为参考客户
了解哪些公司正在使用这个图书馆对于帮助在内部确定项目的优先次序很重要。 如果你的同伴们 正在对 AWS Lambda (TypeScript) 使用 Powertools , 您可以请求将您的姓名和标志添加到 README 文件 提高a AWS Lambda( TypeScript) 的辅助电源工具(成为参考) 问题.
除其他外,下列公司使用Powertools:
- Alma 媒体
- 应用自己
- 贝利·纳尔逊
- Banx 软件
- 凯伦特
- 可认证
- 代码
- EF 教育第一
- 埃尔瓦
- 飞行重量
- 欺诈
- 全球数据网
- 关节
- 半径
- 内向
- 本地软件包
- 我们的隐私
- 完美邮递
- 传感器
- 铁丝网股份有限公司
- 绊脚石10
- 学校
分享你的工作
分享您为 AWS Lambda (TypeScript) 所做的 Powertools 。 看看社区有什么 已经共享 关于AWS Lambda的Powertools (TypeScript).
使用 Lambda 层
这帮助我们了解谁用Powertools为AWS Lambda(英语:TypeScript (TypeScript))以非侵入性的方式使用Powertools,并帮助我们获得未来对其他AWS Lambda语言的Powertool的投资. 何时 使用图层,您可以添加Powertools作为dev的依赖性,以不影响开发过程.
许可证
这个图书馆根据MIT-0许可证获得许可. 见LICENSE文件.