AWS Lambda 的动力工具( TypeScript)
用于 AWS Lambda (TypeScript) 的 Powertools 是用于执行无服务器的开发者工具包 最佳做法和增加开发者的速度。 。 。 .
您可以在 TypeScript 和 JavaScript 代码库中使用库.
介绍
Logger工具提供了一个结构化的伐木经验,并配有适合AWS Lambda功能的额外功能.
使用量
要启动, 请通过运行安装库 :
npm i @aws-lambda-powertools/logger
基本用途
用服务名称和日志消息初始化日志 :
import { Logger } from '@aws-lambda-powertools/logger';
const logger = new Logger({ serviceName: 'serverlessAirline' });
export const handler = async (_event, _context): Promise<void> => {
logger.info('Hello World');
};
您也可以登录错误和补充数据 :
import { Logger } from '@aws-lambda-powertools/logger';
const logger = new Logger();
export const handler = async (
_event: unknown,
_context: unknown
): Promise<void> => {
try {
throw new Error('Unexpected error #1');
} catch (error) {
// Log information about the error using the default "error" key
logger.error('This is the first error', error as Error);
}
try {
throw new Error('Unexpected error #2');
} catch (error) {
// Log information about the error using a custom "myCustomErrorKey" key
logger.error('This is the second error', {
myCustomErrorKey: error as Error,
});
}
};
注入 Lambda 语境
您可以用 Lambda 密钥上下文信息来丰富您的结构日志 :
import { Logger } from '@aws-lambda-powertools/logger';
import type { Context } from 'aws-lambda';
const logger = new Logger();
export const handler = async (
_event: unknown,
context: Context
): Promise<void> => {
logger.addContext(context);
logger.info('This is an INFO log with some context');
};
日志声明会是这样的:
{
"cold_start": true,
"function_arn": "arn:aws:lambda:eu-west-1:123456789012:function:shopping-cart-api-lambda-prod-eu-west-1",
"function_memory_size": 128,
"function_request_id": "c6af9ac6-7b61-11e6-9a41-93e812345678",
"function_name": "shopping-cart-api-lambda-prod-eu-west-1",
"level": "INFO",
"message": "This is an INFO log with some context",
"service": "serverlessAirline",
"timestamp": "2021-12-12T21:21:08.921Z",
"xray_trace_id": "abcdef123456abcdef123456abcdef123456"
}
记录即将到来的事件
您可以登录即将到来的事件( 这里作为装饰器, 工作也是中端软件) :
import type { LambdaInterface } from '@aws-lambda-powertools/commons/types';
import { Logger } from '@aws-lambda-powertools/logger';
const logger = new Logger();
class Lambda implements LambdaInterface {
// Set the log event flag to true
@logger.injectLambdaContext({ logEvent: true })
public async handler(_event: unknown, _context: unknown): Promise<void> {
logger.info('This is an INFO log with some context');
}
}
const myFunction = new Lambda();
export const handler = myFunction.handler.bind(myFunction); //
附加额外的密钥和数据
追加额外的密钥 :
import { Logger } from '@aws-lambda-powertools/logger';
const logger = new Logger();
export const handler = async (
event: unknown,
_context: unknown
): Promise<unknown> => {
const myImportantVariable = {
foo: 'bar',
};
// Log additional data in single log items
// As second parameter
logger.info('This is a log with an extra variable', {
data: myImportantVariable,
});
// You can also pass multiple parameters containing arbitrary objects
logger.info(
'This is a log with 3 extra objects',
{ data: myImportantVariable },
{ correlationIds: { myCustomCorrelationId: 'foo-bar-baz' } },
{ lambdaEvent: event }
);
// Simply pass a string for logging additional data
logger.info('This is a log with additional string value', 'string value');
// Directly passing an object containing both the message and the additional info
const logObject = {
message: 'This is a log message',
additionalValue: 42,
};
logger.info(logObject);
return {
foo: 'bar',
};
};
添加 持久键 到日志实例 :
import { Logger } from '@aws-lambda-powertools/logger';
const logger = new Logger({
serviceName: 'serverlessAirline',
persistentKeys: {
environment: 'prod',
version: process.env.BUILD_VERSION,
},
});
export const handler = async (
_event: unknown,
_context: unknown
): Promise<void> => {
logger.info('processing transaction');
// ... your business logic
};
贡献
如果你有兴趣为这个项目捐款,请参见我们 贡献准则。 。 。 .
路线图
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文件.