Articles of serverless framework

你如何将aws-sdk-js绑定到无服务器框架优化包中?

由于SDK的加载方式,无法通过browserify运行适用于node.js的AWS开发工具包 我想包括一个更新版本的AWS开发工具包的节点,然后什么是包含在lambda中,但我也想优化(通过browserify)我的lambda node.js代码。 我如何解决这个问题?

如何优化AWS Lambda?

我目前正在使用带有无服务器框架的 AWS Lambda构buildWeb API。 在我的lambda函数中,它们每个都连接到Redis(elasticache)和RDB(Aurora,RDS)或DynamoDB以检索数据或写入新数据。 而我所有的lambda函数都在我的VPC中运行。 除了当lambda函数首次执行或执行一段时间后,执行lambda函数需要相当长的时间(1-3秒),或者有时甚至会响应网关超时错误(大约在30秒),即使我的lambdafunctionconfiguration为60秒超时。 正如在这里所说,我假设1-3秒是为了初始化一个新的容器。 但是,我不知道是否有办法缩短这个时间,因为1-3秒或网关超时并不是真正的生产使用的理想select。

无服务器NodeJS /本机node_modules

我遇到了使用无服务器框架在AWS Lambda中加载节点模块的问题。 我的一个节点包使用本机库,所以我使用EC2来创buildnode_module文件夹,然后将它们复制到我的无服务器项目。 一切正常,如果我手动压缩项目并上传到AWS Lambda,但如果我使用serverless deploy没有指定的工件,我得到关于该模块的错误(特别是: ELF file's phentsize not the expected size关于一个.node文件) 我已经尝试添加excludeDevDependencies: false ,这使得部署更大,但仍然给我的错误。 目前,只有在我压缩项目文件夹的内容并将该文件指定为要上载的工件时才有效。 有没有一种不同的方式来获得具有本地绑定节点模块部署无服务器? 更新:在closures开发依赖项的排除之后,使用serverless package并检查serverless package扩展的zip文件创build,我发现.o和.a文件的文件大小在打包版本中与原始文件大小不同。 这是正常的吗?

AWS Lambda可以与S / FTP进行交互吗?

我写了一些基本的js来列出一个FTP的文件,但我得到: “完成请求之前退出进程” 那是因为Lambda无法与FTP交互? 我正在使用jsftp btw。 这是我的设置: 我使用无服务器来创build项目 对于我的lambda,我使用了nodejs,而且我正在使用JSFTP来处理ftp的东西。 我的代码: // Require Serverless ENV vars var ServerlessHelpers = require('serverless-helpers-js').loadEnv(); // Require Logic var lib = require('../lib'); // Lambda Handler module.exports.handler = function (event, context) { lib.respond(event, function (error, response) { return context.done(error, response); }); }; 我的ftp lambda代码: var JSFtp = require("jsftp"); module.exports.respond = function (event, cb) […]

AWS Lambda和无服务器推荐使用什么本地节点版本

从AWS-Lambda和无服务器框架开始,我对节点版本感到困惑: AWS帮助网站表示(截至2016年3月21日) AWS Lambda支持以下运行时版本: Node.js:v0.10.36 所以我没有在我的本地机器上安装Node.js v0.10.36。 通过安装最新的(v 0.4.2)无服务器框架 npm install serverless -g 它给出了以下警告: npm WARN引擎serverless@0.4.2:想要:{“node”:“> = 4.0”}(current:{“node”:“0.10.36”,“npm”:“1.4.28”}) 我认为在AWS上本地使用相同版本可能有助于获得一致的开发环境…我错了吗? 我应该在本地运行什么Node.js版本以最大限度地利用无服务器?

我应该如何从AWS Lambda函数连接到Redis实例?

我正在尝试使用AWS Lambda和无服务器框架为单页Web应用程序构buildAPI。 我希望使用Redis Cloud进行存储,主要是为了兼顾速度和数据持久性。 我将来可能会使用更多的Redis Cloudfunction,所以我宁愿避免使用ElastiCache。 我的Redis Cloud实例与我的function在同一AWS区域中运行。 我有一个名为related的函数,它将GET请求中的hashtag接收到API端点,并检查数据库中是否有条目。 如果它在那里,它应该立即返回结果。 如果不是,则应查询RiteTag ,将结果写入Redis,然后将结果返回给用户。 我很新,所以我可能做一些天真的事情。 这是事件处理程序: 'use strict' const lib = require('../lib/related') module.exports.handler = function (event, context) { lib.respond(event, (err, res) => { if (err) { return context.fail(err) } else { return context.succeed(res) } }) } 这是../lib/related.js文件: var redis = require('redis') var jsonify = require('redis-jsonify') var rt […]

无服务器框架:如何添加外部NPM软件包?

我的情况是,我在添加外部NPM软件包到我的无服务器框架项目(具体包是geopoint)有点麻烦。 我去了无服务器项目的根文件夹,并运行npm install geopoint –save 。 package.json更新了dependencies": { "geopoint": "^1.0.1" }并创build了node_modules文件夹。 我的文件夹结构如下所示: 根项目文件夹 -function –geospatial — handler.js -node_modules –geopoint 在我的函数/地理空间/处理程序.js我声明的geopoint模块: var geopoint = require('geopoint'); var geopoint = require('../../geopoint'); var geopoint = require('../../../geopoint'); lambda控制台返回错误: { "errorMessage": "Cannot find module '../../geopoint'", "errorType": "Error", "stackTrace": [] } 如何正确地将外部NPM模块添加到无服务器框架项目?

如何在本地testingaws lambda函数

我有一个用node.js express开发的移动应用程序后端。 我试过将它部署为lambda服务。 为此,我创build了一个无服务器框架项目( https://github.com/serverless )。 以前我通过启动快速后端应用程序在本地testing移动应用程序。 现在我无法find一个方法来testing我的手机应用程序本地没有本地后端。 jaws run命令只运行一次,我叫它。 有什么方法来启动lambda函数作为一个Web服务? 还是有没有其他的无服务器框架?