Articles of aws lambda

如何在无服务器框架中为POST端点添加请求模型

如何为POST端点添加请求模型,以便在导出API for iOS时显示在API网关中? 我可以在AWS中手动添加请求模型,但是由于这是通过服务器部署的,所以我需要在那里。 我看到有一个responseModels定义端点,但我看不到一个requestModels? 我的s-functions.json有这个 "endpoints": [ { "path": "blog/graphql", "method": "POST", "type": "AWS", "authorizationType": "AWS_IAM", "authorizerFunction": false, "apiKeyRequired": false, "requestParameters": {}, "requestTemplates": { "application/json": "{\"query\" : $input.json(\"$\")}" }, "responses": { "400": { "statusCode": "400" }, "default": { "statusCode": "200", "responseParameters": {}, "responseModels": {}, "responseTemplates": {}, "application/json": "" } } } ] 在AWS APIGateway中,我需要手动添加请求模型 […]

使用Node和Node-gyp的AWS Lambda上的奇怪“内存”行为

我有一个用NodeJS编写的AWS Lambda,调用过程非常简单 NODEJS – > NodeModule(CPP) – > Extern C函数,这个设置是用node-gyp编译的。 您可以通过https://drive.google.com/open?id=0B-2d-CuY5fkwS3lwdE96R1V6NEk查看完整的代码 CPP节点模块调用C中的一个运行循环的函数。 并在C函数范围内增加两个variables,而在C代码的主要范围内增加另一个variables。 当你在本地运行这个代码。 循环递增,两个variables都达到了11,正如预料的那样,你有多less运行它。 但是,当您在AWS Lambda中运行相同的代码时,每次调用都会有某种“内存”。 一般范围内未被重置的variables正在增加,为11,22,33等倍数 重复一次,这从来没有发生在本地,两个variables总是在11.你可以通过运行1.构build节点gyp干净configuration构build2.节点app.js(本地运行) Index.js适用于AWS Lambda 我真的不能解释这种行为? 是否有某种上下文或Lambda提供的某种“内存”或caching? 我已经为此做了一个开放的API网关。 (随意刷新,看到“记忆”在行动)。 https://koj2yva6z9.execute-api.us-east-1.amazonaws.com/dev/testLambdaCache 这种行为有时不一致,有时计数重置。 或者,您可以通过上传新的AWS lambda代码进行重置。 任何关于这个奇怪的行为的想法是赞赏。 app.js(用于本地testing) var addon = require('./build/Release/addon'); console.log(addon.testCache()); console.log(" addon method completed"); index.js(在lambda中使用) console.log('Loading function'); exports.handler = (event, context, callback) => { var addon = require('./build/Release/addon'); var […]

如何从Alexa技能获取Amazon Echo的位置

我知道亚马逊并没有直接向开发者提供获取用户回声的位置的方法,但我想知道是否有办法解决这个问题。 我正在写节点的技能,所以我已经运行到像geoip这样的节点包,但是当我把这个技能上传到aws lambda时,我得到一个错误,说ELF头文件中的某些东西是不正确的。 任何援助将不胜感激!

lambda在尝试访问mongo时超时

我写了一个简单的mongotesting,试图访问一个vpc中的mongo服务器。 对于每次运行我得到:“errorMessage”:“***任务3.00秒后超时”我已经写了更多的处理程序在lambda只是为了检查它。 连接到vpc没有问题。 连接到另一台服务器的其他处理程序(相同文件)运行良好。 其他模块没有问题。 我已经添加了另一个模块(make-random-string),它每次都在运行。 我没有得到任何错误消息。 Mongo没有例外。 它每次只是超时。 增加两个内存到1024和执行时间到15s没有帮助,结果是一样的。 Mongo驱动程序不需要任何C ++版本,除非你使用Kerberos,我不是。 testing文件模仿拉姆达,运行良好。 示例代码在这里: http : //pastebin.com/R2e3jwwa在数据库信息被删除。 谢谢。

无服务器与nodejs和mysql =>进程退出之前完成请求

我正在用nodejs模板开发一些无服务器function。 我有一个服务,连接到一个MySQL数据库并检索一些数据。 当我第一次打电话时,一切都很好,但是当我重复一遍时,我会收到一个“完成请求前退出的进程”错误消息。 如果我再次尝试同一个电话,我会收到数据。 所以这个服务在奇怪的调用上是正确的,并且在偶数调用上返回错误(有趣的是?)。 这是处理函数的代码: module.exports.getAll = (event, context, done) => { deviceRepository.getAllDevices().then((response) => { done(null, { response }); }).catch((error) => { done(error); }); }; 这是版本库函数的代码: const mysql = require('mysql'); const when = require('when'); const config = require('./config'); const conn = mysql.createConnection({ host: config.RDSHOST, user: config.RDSUSER, password: config.RDSPASS, database: config.RDSDB, port: config.RDSPORT }); module.exports.getAllDevices […]

无服务器AWS Lambda Express应用程序中的摩卡testing

我有一个nodejs应用程序基于expressjs ,我正在testing使用gruntjs作为任务运行者和mochajs作为testing框架。 因此,我编写了组件testing,集成testing和unit testing,这些testing是通过grunt test执行的,或者是在开发过程中直接通过mocha test/component/v1/apiX本地执行的,而在部署过程中作为CIstream程的一部分在testingVM上执行。 现在,当考虑将此应用程序迁移到AWS Lambda(也称为无服务器)时 ,会想到以下有关我的testing和CI过程的问题(请注意,我将使用aws-serverless-express ,因此不必明确写入lambda函数) : 1)如何实现通过HTTP API请求完成的组件/ e2etesting? 2)如何实现只加载和testing应用程序的一部分的集成和unit testing? 3)如果任何一个testing失败,如何整合一个拒绝部署的新的CIstream程? 我认为问题1)大部分已经解决了:从外部testingAWS Lambda的方法有很多。 您可以执行lambda-to-lambdatesting,从testinglambda直接调用您的lambda-to-test,也可以使用来自test-lambda的HTTP通过AWS API Gateway调用lambda-to-test,如此处所述。 你也可以使用serverless-mocha-plugin进行本地lambdatesting(如果使用无服务器的话 )。 这是2)它变得有趣:一旦你的lambda部署它是一个黑匣子。 你不能执行任何没有被明确声明为lambda接口的东西。 我如何保存或重新实施现有的摩卡咖啡单元和集成testing? 3)相同:你如何让你的CI运行所有的部署testing,如果失败,拒绝部署? 这里是我自己的方法:只有在testing环境中,我才能使我的节点应用程序无服务器。 简单地让它作为经典的节点HTTP服务,通过使所有无服务器的变化有条件的取决于环境。 由于几乎没有变化,这应该是可能的和可维护的。 现在我可以像往常一样在本地运行testing,并使用grunt和mocha进行部署。 然后,如果我想确认无服务器版本也可以,我仍然可以进行最后的lambda-to-lambdatesting。

如何从AWS DynamoDB – JS lambda中的函数返回查询结果

我有一个愚蠢的问题,让我疯狂。 我有一个AWS lambda函数,可以调用Dynamo db。 我想有ddb.Scan操作到一个函数得到结果,然后将其传递给事件,但我不能返回函数内的结果… var aws = require('aws-sdk'); var ddb = new aws.DynamoDB(); function getName(userid) { ddb.scan({ TableName: "Users", ScanFilter: { "userid": { "AttributeValueList": [ {"S": userid} ], "ComparisonOperator": "EQ" } } }, function (err, data) { return data.Items[0].username; }); }; exports.handler = function (event, context) { var userid= '4vwe6jd56es59q'; var username = getName(userid); […]

如何处理自定义Alexa技能中的自由文本?

为了学习的目的,我想创build一个由自定义Alexa技能调用的AWS Lambda函数。 此function的目的是发送邮件(电子邮件,短信)给指定的收件人。 我知道如何创buildfunction,一切工作正常,除了Alexa的用户提供了她应该发送的自由文本的部分。 我知道老虎机的概念,但我只能定义固定值。 有没有办法获得免费的文本,并在Lambda函数(Java或Node.js)中使用它? 提前致谢

在运行nodejs + expressjs时访问aws-lambda上下文

我刚刚开始使用AWS-Lambda,AWS-API Gateway和ExpressJs。 我在查找“ExpressJs”应用程序中如何使用AWS-Lambda“上下文”时遇到问题。 我在用着: AWS-LAMBDA AWS-API网关 NodeJs v4.3.2 ExpressJs 4.14.1 ClaudiaJs 2.7.0 在Aws Lambda中,我使用aws-serverless-express接收API网关请求并初始化节点应用程序。 以下是我从不同的教程中find的结构等 lambda.js(从API网关启动。在调用“app.js”时提供“context”variables) 'use strict' const awsServerlessExpress = require('aws-serverless-express') const app = require('./app') const server = awsServerlessExpress.createServer(app) exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context) 我app.jsexpression的核心是: var express = require('express'); … var app = express(); … app.use('/', index); … module.exports = app; […]

AWS Step / Lambda – 在运行之间存储variables

在我第一次涉足云计算时,我能够遵循Mark West关于如何使用AWS Rekognition处理来自安全摄像机的图像的指示 ,这些图像被转储到S3存储桶中,并在检测到人员时提供通知。 他的代码是为Raspberry Pi相机设置的,但是我可以通过将触发的图像通过FTP传输到Synology NAS,并使用CloudSync将其镜像到S3存储桶,从而将其适配到我的IP摄像机。 按照下图的步骤函数调用Lambda函数,并在15秒内收到一封电子邮件,附带检测到的标签列表和附加的图像。 问题是,只要条件被触发,照相机就会每秒上传一张图像,如果在照相机前面有很多活动,我可以快速地处理几百封电子邮件。 我想在make-alert-decision和nodemailer-send-notification之间插入一个函数来检查是否在最后一分钟内发送了电子邮件通知,如果没有,请立即转到nodemailer-send-notification,如果因此,将标签列表和path存储到数组中,然后在60秒内发送一封包含所有附件的电子邮件。 我知道我必须从外部存储数据,并且遇到这篇文章解释了不同的caching数据方法的好处,我还认为我可以检查上传到S3的文件的时间戳,比较两个最近上传文件来决定是否继续或batch file以备后用。 作为AWS的新手,我正在寻找从复杂性和成本angular度来看哪种方法最有意义的build议。 我可以忍受文章中讨论的任何方法的滞后,只是不知道如何继续,因为我从来没有使用甚至听说过任何服务。 谢谢!