Tag: lambda

从Lambda函数(Node)连接到MySQL数据库

我一直无法使用来自Lambda函数的Node连接到MySQL数据库。 我收到的错误是Task timed out after 4.00 seconds 。 有没有人有任何解决scheme? 这里是我的状态的概述: AWS RDS数据库是一个MySQL数据库。 它不局限于VPC(我可以使用MySQLWorkbench的主机/用户/密码进行连接)。 我的Lambda函数的执行angular色被设置为将Lambda作为受信任的实体并授予了AdministratorAccess。 在我的本地机器上,我安装了mysql模块,压缩了我的index.js和node_modules文件夹,并上传到了我的Lambda函数。 我已经尝试把处理程序中的createConnection和connect函数。 我试图把我的查询里面的连接函数的callback函数。 我试图增加超时时间到10秒。 我的代码: var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'amazon-string.rds.amazonaws.com', user : 'myusername', password : 'mypassword' }); connection.connect(); exports.handler = (event, context, callback) => { connection.query("SELECT * FROM table", function(err, rows, fields) { console.log("rows: " […]

AWS Lambda导出类不工作

我正在使用NodeJs 6.10.2。 我正在使用2个文件 index.js var operation = require('./Handler/opHandler').opHandler; var lambdaHandler = function () { var o = new operation(); o.deleteMessage(); } exports.lambdaHandler = function(event, context, callback) { handleSQSMessages(context, callback); }; opHandler.js opHandler = function() { this.db = ''; } opHandler.prototype.deleteMessage = function (receiptHandle, callback) { // My code here // this.db = 'new val'; } […]

AWS Lambda网关API会提供错误消息

我为lambda函数创build了一个API端点,如下所示: https://XXXXXXXXX.execute-api.us-east-1.amazonaws.com/XXXX/XXXXXXXXXXXX/这是GET方法。 在从邮差中调用这个端点的时候,它正在给我 {“message”:“XXXXXXXXX3LPDGPBF33Q:XXXXXXXXXXBLh219REWwTsNMyyyfbucW8MuM7”授权标头中没有有效的键=值对(缺less等号):“AWS XXXXXXXXX3LPDGPBF33Q:XXXXXXXXXXBLh219REWwTsNMyyyfbucW8MuM7”。 } 这是Amazon Lambda上传网站的屏幕截图: http : //i.stack.imgur.com/mwJ3w.png 我有IAM用户的访问密钥ID和密钥访问密钥。 我用它,但没有运气。 任何人都可以build议调整这一点。

Twilio客户端错误:使用AWS Lambda / AWS API网关进行Twilio IP消息传递

我试图做一个简单的聊天应用程序基于Twilio的例子( https://github.com/TwilioDevEd/ipm-quickstart-node )。 我能够快速启动并运行。 我想修改一下 无论何时用户通过Web界面( http://localhost:3000 )发送消息,都会触发Twilio的webhook。 这个webhook PING一个映射到AWS Lambda函数的AWS API端点。 此AWS Lambda函数接收Channel Sid,进行身份validation,并简单回复“您说了什么? 我已经正确设置了AWS Lambda和AWS API网关。 以下是我的Lambda代码示例: 'use strict'; var TWILIO = require('twilio'); var AccessToken = require('twilio').AccessToken; var IpMessagingGrant = AccessToken.IpMessagingGrant; var http = require("http"); module.exports.handler = function(event, context, cb) { var accountSid = 'TWILIO-ACCOUNT-SID'; var authToken = 'TWILIO-AUTH-TOKEN'; var IpMessagingClient = TWILIO.IpMessagingClient; […]

AWS Lambda函数在完成请求之前退出

我正在尝试遵循S3和Lambda的AWS指南 http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html 我在手动testing阶段,但是当我尝试运行testing时,我得到“errorMessage”:“在完成请求之前退出进程”。 在日志中,失败点与async.waterfall代码有关。 当我运行Lambda函数时,它会得到我的示例图像,resize并将其放入新的S3存储桶。 然后它看起来像asynchronous试图find一个未定义的“nextTask”运行。 我从来没有使用过asynchronous,所以我不知道如何解决这个问题。 cloudwatch日志文件给了我这个 2016-09-16T18:36:44.011Z 836d0280-7c3c-11e6-933a-9b5b3a5e8dd8 TypeError: undefined is not a function at /var/task/ResizeImages.js:98:13 at /var/task/node_modules/async/dist/async.js:486:20 at nextTask (/var/task/node_modules/async/dist/async.js:5008:33) at Response.<anonymous> (/var/task/node_modules/async/dist/async.js:5015:17) at Response.<anonymous> (/var/task/node_modules/async/dist/async.js:339:31) at Response.<anonymous> (/var/task/node_modules/async/dist/async.js:847:20) at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:355:18) at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20) at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10) at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:615:14) 要安装asynchronous(和imageMagik),我只是使用该命令 npm install async gm 在我的node_modules文件夹里面。 我使用的示例节点脚本是在这里,第98行被评论。 // dependencies var async […]

AWS API网关:由于configuration错误而导致执行失败:响应中的JSON无效

我有一个调用Lambda函数的自定义授权者的API网关设置。 为了testing的目的,我从这里复制了这个例子: http : //docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html#api-网关代理集成-λ-function的NodeJS 我得到的文件相同的答案,但是当我testing授权者,我得到这个堆栈跟踪: Endpoint request body after transformations: {"type":"TOKEN","authorizationToken":"test","methodArn":"arn:aws:execute-api:ap-southeast-2:893445519708:uyue0zqh15/null/GET/"} Authorizer result body before parsing: {"statusCode":200,"headers":{"x-custom-header":"my custom header value"},"body":"{\"message\":\"Hello World!\",\"input\":{\"type\":\"TOKEN\",\"authorizationToken\":\"test\",\"methodArn\":\"arn:aws:execute-api:ap-southeast-2:893445519708:uyue0zqh15/null/GET/\"}}"} Execution failed due to configuration error: Invalid JSON in response: {"statusCode":200,"headers":{"x-custom-header":"my custom header value"},"body":"{\"message\":\"Hello World!\",\"input\":{\"type\":\"TOKEN\",\"authorizationToken\":\"test\",\"methodArn\":\"arn:aws:execute-api:ap-southeast-2:893445519708:uyue0zqh15/null/GET/\"}}"} AuthorizerConfigurationException 为什么授权人不喜欢JSON响应?

AWS lambda无服务器网站会话维护

我开发了一个使用node.js作为后端的网站。 最近我试图使它无服务器,并部署到lambda。 我将重写大部分代码,但是在用户login后还没有想出如何维护会话。我使用“express-session”模块,会话数据全部logging在数据库中。 说实话我对会议没有很深的理解。 我search了谷歌,没有find我所需要的。 有没有人有一些使用lambda维护会话的示例代码? 或任何资源。 非常感谢!

Lambda从MySQL RDS获取数据,但超时

我正在使用Lambda连接到RDS与VPC和正常工作。 我可以成功从MySQL获取数据,但Lambda会超时。 CloudWatch日志: 2017-02-15T18:56:18.609Z [RowDataPacket {userInfo:'xxx'}] END RequestId:xxx REPORT RequestId:xxx持续时间:300001.69 ms计费时间:300000 ms内存大小:512 MB使用的最大内存:22 MB 2017-02-15T19:01:18.306Z xxx任务在300.00秒后超时 Handle.js db.getPersonInfo("xxx", function (err, result) { console.log(result); const response = { statusCode: 200, body: JSON.stringify({ message: 'test', input: event, }), }; callback(null, response); }); DB.js var getPersonInfo = function(userId, callback){ pool.getConnection(function(err, connection){ var sql = 'SELECT userInfo FROM user […]

Lambda函数失败无法导入模块“索引”

错误: Unable to import module 'index': Error at Function.Module._load (module.js:417:25) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Object.<anonymous> (/var/task/node_modules/slack-incoming-webhook/lib/index.js:3:19) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) 通过看起来这个我的代码是不是问题这是一个问题,松散的传入webhook节点模块,但是一块有问题的代码是这条线,看起来完全正常。 var SlackClient = require('./client'); 我已经尝试了4个不同的包(request,http,node-webhooks和slack-incoming-webhooks),并且它们都在节点模块中都失败了。 我非常困惑,因为我可以让代码在我自己的计算机上和Amazon Linux AMI EC2实例上运行(运行相同的节点版本) 所有的代码被压缩并使用aws-cli发送到lambda,并且我已经在lambda上部署了node.js代码,没有任何问题(alexa技能)。 我已经试过在ec2实例npm安装,我已经尝试了几个不同的包,我已经得出结论必须有某种configuration错误的lambda,但我找不到什么。 有人能指点我吗? 这里是我的代码,如果有人也好奇拉姆达触发器是aws iotbutton。 const slack = require('slack-incoming-webhook'); const send […]

将AWSconfiguration传递给导入的模块

我正在尝试通过在本地运行JS单元来testingJS AWS Lambda。 为了模拟Lambda环境,我假定Lambda与AWS.config.credentials具有相同的angular色,然后简单地调用我导入的Lambda函数。 这工作如果我复制和粘贴到testing文件的Lambda函数,但如果我导入它然后似乎函数运行一个干净的AWS.config没有我的configuration。 我可以更改Lambda模块导入AWS的方式(使其成为全局或执行其他操作),以便从testing中获取configuration,但是我更愿意将文件保存为应该上传到Lambda的文件。 在AWS Lambda中,AWS凭证以某种方式预先configuration,而模块不必执行任何操作,我想模拟该function。 这怎么能在Node中完成? 编辑:您可以在AWS Lambda中运行任何示例函数。 例如,只需在适当的AWS Lambda中运行下面的代码即可。 var AWS = require("aws-sdk"); var dynamo = new AWS.DynamoDB.DocumentClient(); dynamo.query(…) 要在本地运行,必须在此代码之前加上以下内容: AWS.config.update({region: 'us-east-1'}); AWS.config.credentials = new AWS.SharedIniFileCredentials(); AWS.config.credentials = new AWS.TemporaryCredentials({ RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials', }); 问题是,在unit testing文件中运行此configuration步骤不会使configuration可用于导入的lambda函数,因此不能正确模拟环境。