首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AWS Lambda: NodeJs自定义层

AWS Lambda: NodeJs自定义层
EN

Stack Overflow用户
提问于 2020-05-06 07:20:51
回答 1查看 898关注 0票数 1

我是nodejs和aws lambda的新成员。我正在尝试为我的lambda函数创建一个具有公共函数的层。在lambda处理程序中,自定义模块的导入具有以下定义:let commonService = require('@common/service');

带有模块文件的zip具有以下结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nodejs
--node_modules
  --@custom
    --service
    --index.js
    --package.json  

但是我得到了错误:"errorMessage": "Error: Cannot find module '@common/service'\nRequire stack:\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js",

@定制/服务模块package.json包含以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "@common/service",
  "version": "1.0.0",
  "main": "index.js",
  "license": "ISC",
  "dependencies": {
    /***
  }
}

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-01-14 14:04:07

尝试使用AWS Lambda层

使用层有两个主要好处。

  • 它允许您在一个地方部署基本依赖项,并集中管理它们。
  • 它缩小了Lambda应用程序部署的规模。没有更大规模的node_modules文件夹层次结构来上传每次。

如何使用它们?这是一个相当深入的话题,但最重要的是你可以:

  1. 在AWS中构建和部署一个层。一层只不过是一个“裸露”的npm项目,真的。您可以在其中安装常用的NodeJS模块,而不是其他模块。
  2. 假设您使用无服务器应用程序模型来部署AWS Lambda函数,则配置Lambda函数以使用该层。下面是SAM文件的精简版本,它说明了这一点:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: My Serverless App
Parameters:
  # ...

Globals:
  Function:
    Runtime: nodejs10.x
  #   Environment:
  #     Variables:
  #       NODE_ENV: test

Resources:

  CommonDependenciesLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      LayerName: my-common-deps
      Description: Common dependencies for my NodeJS apps
      ContentUri: ../common-deps/
      RetentionPolicy: Retain
    Metadata:
      BuildMethod: nodejs10.x

  performSomeFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      FunctionName: performSomeFunction
      Handler: lambda.someFunction
      Layers:
        # You can either Ref a layer defined in this SAM file like this.
        # - !Ref CommonDependenciesLayer

        # ... or you can hard-code an external ARN
        # - arn:aws:lambda:us-east-1:nnnnnnnnnnnnn:layer:myapp-common-deps:5
      CodeUri: ./
      # ...
  1. 在Lambda代码中,您所做的就是使用普通的CJS require语法。例如,假设我将mysql库放在上面的CommonDependenciesLayer中。只要我的Lambda函数指向SAM文件中的层,我所要做的就是代码中的require('mysql')。它会在那里的。

当您开始工作时,在层部署方面有一些需要考虑的微妙之处。

  • 我是否想每次都建立这一层?(可能不是,但我建议您这样做,因为您正在学习层和Lambdas是如何一起工作的)。
  • 我的层组件多久改变一次?
  • 我想公开我的图层吗?
  • 我想从另一个帐户中使用一个公开可用的层吗?
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61638895

复制
相关文章
替换 VOC 数据集中图片路径
在一次做项目的时候,团队分配任务做数据集,用 labelimage 来打标,汇总数据时发现 xml 中的图片路径各不相同,于是就写了这个工具来修改 xml 中的图片路径。
HauHau
2022/01/12
1.6K0
vue-clearcss 高效清除vue中无用的css
vue-clearcss 会找到你css中没有使用的css样式,是否删除由使用者自己决定,工作起来就像eslint
玖柒的小窝
2021/10/26
1.8K0
vue-clearcss 高效清除vue中无用的css
python strip()函数 删除字符串中无空白字符或者是无用字符
s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符
学到老
2019/02/14
1.2K0
python strip()函数 删除字符串中无空白字符或者是无用字符
函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符 s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符 注意: 1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ') >>> a = '     123' >>> a.strip() '123'
学到老
2018/03/19
1.5K0
读书无用中的数据分析2022.11.3
1、二分类人看到的 或者 然后 看不到多分类、多因素 如何准确描述长期、复利、明确相关性的价值是个难点。 2、看不到比例 书籍出版数量和好书比例 成功人士和人口基数比例 3、无法承受不稳定性 4、没有方法在信息过载的现代做筛选 1个问题 统计100本书 筛选50本高评分书 筛选30本点评、听书、解读,知识框架基本观点大碰撞 筛选20本看目录 筛选10本精读 筛选5本反复读,输出读后感 PDCA循环5遍 5、幸存者偏差
用户7138673
2022/12/19
1660
读书无用中的数据分析2022.11.3
MySQL字符集中文乱码剖析
serena
2016/11/08
4.2K0
Spring Security 在 Spring Boot 中的使用【集中式】
  创建好一个空的 Spring Boot 项目之后,写一个 controller 验证此时是可以直接访问到该控制器的。
Demo_Null
2020/10/28
2.5K0
Spring Security 在 Spring Boot 中的使用【集中式】
python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」
下面我们将通过一组示例,详细给大家说明下关于用python的替换问题,相信大家结合实例一定非常容易理解,一起来看下吧~
全栈程序员站长
2022/09/06
4.5K0
python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」
在 Python 中的常见的几种字符串替换操作
比如,输入的字符串为’one two one two one’,第一个参数为替换前的参数,第二个为替换后的参数。默认会替换字符串中的所有符合条件的字符串。
全栈程序员站长
2022/09/07
6.2K0
XPath在数据采集中的运用
在进行数据采集和信息提取的过程中,XPath是一种非常强大且灵活的工具。它可以在HTML或XML文档中定位和提取特定的数据,为数据分析和应用提供了良好的基础。本文将介绍XPath的基本概念和语法,并分享一些实际操作,帮助您充分了解XPath的威力,并学会在数据采集中灵活运用。
华科云商小孙
2023/10/09
2310
分分钟清除项目中无用的console.log代码
说起console.log调试,不用多说,那是非常的好用,开发中帮助我们解决了不少Bug。我们经常能在开发环境中看见这一坨一坨的console调试。但是生产环境是绝不对不允许出现console信息代码的。你还在手动一个一个删除吗,那得多累啊!
童欧巴
2021/08/20
3.2K0
分分钟清除项目中无用的console.log代码
python 清除字符串中的 emoji 表情
https://pypi.org/project/emoji/ pip install emoji 字符串中间有 emoji 表情,替换掉。 text = "🐰贝贝有点甜🐰" res = emoji.demojize(text) # ':rabbit_face:贝贝有点甜:rabbit_face:' # 正则表达式替换为 r"想换的字符串" res = re.sub(emoji.get_emoji_regexp(), r" ", text) # ' 贝贝有点甜 ' 封装为函数 def remove_emo
Michael阿明
2021/09/06
3.8K0
清理无用的依赖包
随着开发的不断推进,难免会产生一些以前引入了但现在已经不再需要的依赖包,置之不理显然并不是一个好习惯。
凌虚
2020/07/17
4.3K0
简单介绍数据采集中的数据埋点
每个人都会走路跑步,但是并不是人人都能成为专业的运动员那么出色。产品经理就是一种这样的职业,我们都可以站在产品的角度思考问题,但我们并不是都能够成为一名出色的产品经理。
木东居士
2019/02/28
2.6K0
怎样把DataGrid存放在ViewState中的无用数据卡掉
作者:无间道的博客http://www.cnblogs.com/wangsaokui/article网络
Java架构师必看
2021/03/22
5150
深度学习(Deep Learning)是否已经让传统的机器学习无用了?
作者: 威廉·沃海思(William Vorhies) 编译: AI100 原文地址: http://www.datasciencecentral.com/m/blogpost?id=6448529
AI科技大本营
2018/04/26
2.7K0
深度学习(Deep Learning)是否已经让传统的机器学习无用了?
数据降本利器:无用数据下线自动化
当前,成本观念已经深入人心,有很多小伙伴主动参与到日常降本的工作当中,节省了大量成本。
有赞coder
2023/03/07
6040
数据降本利器:无用数据下线自动化
R 去除无用的levels
有的时候处理完数据后,数据变少了,但是factor的levels却没变。比如说有一个数据:
生信编程日常
2020/06/15
1.7K0
R 去除无用的levels
点击加载更多

相似问题

c:检查main.c中是否从外部文件定义了函数

31

将函数的结构返回给main.c?

13

返回C数组并在main.c中读取它

14

如何从C函数返回C结构数组到go?

12

Emscripten -如何从C获取uint8_t数组到JavaScript?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文