Node.js 如何在无服务器应用程序中通过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:

我正在使用SAM编写一个无服务器应用程序。我创建了一个配置文件夹来保存一些表信息和其他信息。然后我将其加载到app.js中

当我使用SAM deploy在本地部署app.js时,我注意到config文件夹将不包括。您介意告诉我如何在.aws sam\build文件夹的最终生成文件夹中添加配置文件夹吗

我的Yaml文件

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文件夹中