前言
AWS Lambda 是一种无服务器计算服务,可使您在云中运行代码而无需预先配置或管理服务器。 使用 AWS Lambda,您可以轻松构建和运行您的应用程序和服务,无需考虑基础架构。
ts-lambda-handler 是一个可帮助您在 AWS Lambda 上编写 TypeScript Lambda 处理程序的 npm 包。
本文将详细介绍如何使用 ts-lambda-handler 包搭建 AWS Lambda TypeScript 项目,通过学习本文,您将掌握如何利用 ts-lambda-handler 包快速搭建 AWS Lambda TypeScript 项目并实现基础功能。
步骤一:创建 AWS Lambda TypeScript 项目
使用以下命令安装 ts-lambda-handler 包:
npm install --save ts-lambda-handler
执行初始化命令,创建 AWS Lambda TypeScript 项目:
npm init -y tsc --init
此时,项目目录结构如下所示:
. ├── node_modules ├── package.json ├── tsconfig.json └── src └── index.ts
在 src/index.ts
文件中编写 Lambda 函数,示例代码如下:
-- -------------------- ---- ------- ------ - ------------- - ---- -------------------- --------- --------- - ----- ------- - --------- ----- - ----- ---------- - --------- ------------ - -------- ------- - --------- -------- - ----------- ------- ----- ------------- - ------ ----- -------- -------------------- --------- - ----- - ------ ------ -- ----------------- -- - ------ - ----------- ---- ----- - -------- ------- --------------------- -- -- --
注意:Lambda 函数必须导出一个形如 handler: LambdaHandler<Event, Response>
的函数。
步骤二:打包和部署 Lambda 函数
使用以下命令打包 Lambda 函数:
tsc && zip -r function.zip . -x *.ts && mv function.zip ../../../
注意:按照上述命令的默认配置,打出来的 zip 文件需要通过上级目录来访问。
部署已打包的 Lambda 函数,使用以下 AWS CLI 命令完成部署:
aws lambda create-function --function-name my-function \ --handler index.handler \ --runtime nodejs14.x \ --role <replace-with-your-iam-role-arn> \ --zip-file fileb://function.zip
如果您第一次使用 AWS CLI,请参考以下广告链接 AWS CLI 安装教程。
结果
至此,您的 AWS TypeScript Lambda 项目已经完成,执行以下命令触发 Lambda 函数,验证是否正常运行:
aws lambda invoke \ --function-name my-function \ --payload '{"body": {"data": "world"}}' \ output.log
成功执行 AWS Lambda 函数后,您将在 output.log
文件中看到类似以下内容的输出:
{ "StatusCode": 200, "ExecutedVersion": "$LATEST", "Payload": "{\"statusCode\":200,\"body\":{\"message\":\"Hello, world!\"}}" }
总结
借助 ts-lambda-handler 包,我们可以非常方便地编写 TypeScript Lambda 函数。当然,还有一些其他的 Lambda 依赖包,也非常值得我们尝试学习。
本文介绍的 AWS Lambda 仅是一种无服务器计算服务,其应用场景十分广泛。
如有疑问,请在评论区留言,我们将及时跟进并回复。感谢阅读!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055d2481e8991b448dad73