Node.js 如何在无服务器应用程序中通过YAML添加自定义文件夹和文件
我正在使用SAM编写一个无服务器应用程序。我创建了一个配置文件夹来保存一些表信息和其他信息。然后我将其加载到app.js中 当我使用SAM deploy在本地部署app.js时,我注意到config文件夹将不包括。您介意告诉我如何在.aws sam\build文件夹的最终生成文件夹中添加配置文件夹吗 我的Yaml文件Node.js 如何在无服务器应用程序中通过YAML添加自定义文件夹和文件,node.js,yaml,aws-serverless,sam,Node.js,Yaml,Aws Serverless,Sam,我正在使用SAM编写一个无服务器应用程序。我创建了一个配置文件夹来保存一些表信息和其他信息。然后我将其加载到app.js中 当我使用SAM deploy在本地部署app.js时,我注意到config文件夹将不包括。您介意告诉我如何在.aws sam\build文件夹的最终生成文件夹中添加配置文件夹吗 我的Yaml文件 AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Sample SAM Template for test
Globals:
Function:
Timeout: 120
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello-world/
Handler: app.lambdaHandler
Runtime: nodejs10.x
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
此外,当我在调试模式下运行项目时,我会遇到以下错误:
{
"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module '../config/config.js'"
}
我加载js文件如下:
"use strict";
let response;
const AWS = require('aws-sdk');
const config = require('../config/config.js');
包括需要在多个函数(如案例中的配置文件)中重复使用的自定义文件。然后可以使用lambda层 在template.yml中,您将包括一个层,如下所示:
ConfigLayer:
类型:“AWS::Serverless::LayerVersion”
特性:
兼容时间:
-nodejs10.x
ContentUri:./config/
然后将其添加到lambda函数定义中:
Type:AWS::Serverless::Function
特性:
处理程序:cmd/lambdas/hello world/app.lambdaHandler
CodeUri:src/
运行时:nodejs10.x
层:
-参考:配置层
活动:
全套:
类型:Api
特性:
路径:/hello world
方法:获取
config/
目录的内容将在/opt/
路径中提供
这意味着您的
config.js
的完整路径将是/opt/config.js
,您可以从使用该层的任何lambda访问它。有什么想法吗?请帮忙,你找到解决办法了吗?如果没有,我有一些建议…@arjithn:我洗耳恭听…我找不到解决方案,只是将我的文件夹移到了相应的Lambda文件夹中