Articles of aws lambda

AWS DynamoDB查询不对BOOL值进行筛选

我有一个用GUI创build的用户表,给出了电子邮件的分区键,它是一个string。 然后我用aws lambda来做一个putItem,它有: email (string) test@testing.com deleted (BOOL) false 这工作得很好。 然后我试图用lambda查询它使用以下参数和查询: var params = { TableName : 'Users', KeyConditionExpression : 'email = :email', FilterExpression : 'deleted = :deleted', ExpressionAttributeValues : { ':email' : email, ':deleted': { BOOL: false } } }; docClient.query(params, function(err, data) { if (err) return fn(err); else { console.log("GetItem succeeded:", JSON.stringify(data, null, […]

Amazon Cloudfront超时错误

我正在使用mongodb数据集生成器生成数据的节点项目,我已经将我的数据生成服务器代码添加到了AWS的Lambda,我已经公开到AWS的api网关。 所以现在的问题是,CloudFront在30秒后超时请求 。 而问题是,我正在做的计算不能分解成多个API命中。 那么社区的任何人都可以帮助我,或者可以告诉我一些替代scheme,让我可以打到不会超时的请求。

无服务器框架:如何使用CloudFormation进行部署?

我是无服务器框架的新手。 那么,至less到最新的版本,这在很大程度上取决于CloudFormation。 我在我的计算机上使用以下方法全局安装框架 npm install -g serverless 然后我创build了一个服务使用: serverless create –template aws-nodejs –path myService 最后,我跑了: serverless deploy 一切似乎正常部署,它显示在terminal没有错误。 我可以在新创build的专用S3存储桶中看到CloudFormation文件。 但是,我无法在AWS Lambda控制台中find默认的“ hello Lambda函数。 我错过了什么? CloudFormation文件是否应该在部署时创buildLambda函数?

为什么AWS Lambda函数总是超时?

我正在testingaws lambda,使用4.3版本的nodejs。 我能够在控制台testing中成功完成处理函数中的所有语句,包括连接到我们vpc中的mongodb主机。 但是,function总是超时。 我发现了几个post和资源,讨论使用callback,设置上下文的属性和IAMangular色权限,但无论我做什么,它总是结束超时。 当前代码: 'use strict'; var Mongoose = require('mongoose'); var Device = require('./device_model'); var Alarm = require('./alarm_model'); var Event = require('./event_model'); var mongoConnection = process.env.MONGO_URL; var connection = Mongoose.connect(mongoConnection); Mongoose.connection.once('open', function() { console.log("Connecting to mongo at: " + mongoConnection); console.log("Mongoose connection in lambda opened"); }); Mongoose.connection.on('error', function(){ console.error("Error creating mongoose connection in […]

AWS Lambda函数如何更新DynamoDB表中的所有logging?

我正在使用需要运行DynamoDB表中的所有项目并更新某些属性的AWS Lambda函数(节点4.3)。 我遇到的问题是如何让Lambda等待所有DynamoDB操作完成。 var async = require('async'); var aws = require('aws-sdk'); var doc = new aws.DynamoDB.DocumentClient(); exports.handler = (event, context, callback) => { doc.scan({ TableName: 'Occupations_dev' }, function (err, data) { console.log(data.Items.length); var funcs = []; data.Items.forEach(function (item) { funcs.push(function (cb) { item.Popularity = 0; doc.put({ TableName: 'Occupations_dev', Item: item }, function (err, data) { […]

AWS中的lambda函数返回后,variables为null

我试图定义局部variables,然后调用lambda函数将值填充到我的本地variables: var listOfAliases = null; lambda.invoke(params, function(err, data) { if (err) { //context.fail(err); console.log(`This is the ERROR execution =${err} =================================`); prompt(err); } else { //context.succeed('Data loaded from DB: '+ data.Payload); listOfAliases = JSON.stringify(data.Payload); console.log(`This is the VALIDE execution =${data.Payload} =================================`); //I can see this in the log with proper values console.log(`This is the VALIDE execution(listOfAliases) […]

无服务器框架Facebook Bot慢(AWS Lambda)

我正在开发一个Facebook聊天机器人,我正在使用无服务器框架(Node.js)开发它并将其部署到aws lambda。 在开始的几个星期里,我使用无服务器的离线插件运行了一个本地无服务器的lambda模拟器,一切都很好。 昨天,我终于决定将其部署到AWS lambda,现在我看到性能和一致性的显着下降。 有时机器人需要10秒才能做出回应,有时甚至是瞬间的。 奇怪的是,在lambda云日志中,它总是说这个函数在150毫秒左右完成,这似乎超快,但脸谱机器人根本不反映速度。 我正在打一个数据库,但查询绝对不会花费近10秒的时间来运行。 更新: 我决定尝试使用邮差(这基本上是curl的)手动发送请求到API端点来testingbot。 每当api即时回复,即使我发送了与Messenger一样的请求主体。 所以看起来这个请求只是需要很长时间才能达到lambda api,但是当它到达那里时,它就像应该运行一样。 任何想法如何解决这个问题?

AWS Lambda(NodeJS)不允许http.request或https.request?

我试图从一个Lambda请求另一个API。 我发现使用NodeJS http和https模块允许GET请求,但任何其他(例如POST)不起作用; 同时POST是唯一的方法,我需要为我尝试调用的服务工作。 下面是一个Lambda执行GET并收到200响应的示例: const https = require('https') function handler(event, context, callback) { const options = { hostname: 'encrypted.google.com' } https .get(options, (res) => { console.log('statusCode:', res.statusCode); res.on('end', callback.bind(null, null)) }) .on('error', callback); } exports.handler = handler 这certificate他的请求是允许的。 但是,如果脚本尝试使用https(或https)lib /模块的.request()方法发出相同的请求,请求将永远不会结束,并且Lambda会超时。 const https = require('https') function handler(event, context, callback) { const options = { hostname: […]

通过aws codebuild为nodejs lambda创buildzip文件

我想通过aws codebuild过程为我的nodejs lambda创build一个zip工件 – 这样lambda函数可以在S3中使用这个zip文件作为源代码,并且我们有一个部署“certificate”,用于在codebuild中使用git commit id进行pipe理 我在github-repo中的文件结构是 folder1 – myfile.js – otherfile.js folder2 – otherfiles.js package.json 现在为nodejs lambda项目我想zip文件没有zip文件夹(我们需要的lambda nodejs项目),所以zip应该直接包含以下文件 – myfile.js – node_module ==> folder from codebuild via npm install command 问题: 1)在S3输出zip包含在文件夹即.zip-> rootfolder-> myfile.js,而不是我们要求的.zip-> myfiles.js这是不可用的lambda作为nodejs它应该有文件在根zip和不在里面他们(文件夹内没有相对path) 2)path – 你可以看到myfile.js是在一个文件夹我想相对path被省略 – 我试图放弃path,但问题是所有的node_module文件也在文件夹而不是在文件夹作为丢弃path适用于他们两个 – 我可以设置丢弃path只为myfile.js而不是为node_module文件夹? 我目前的yaml文件: artifacts: files: – folder/myfile.js – node_modules/**/* discard-paths: yes 如果有人可以提供解决scheme,这将是很好的? 如果解决scheme中不包含更改的github-repo文件夹结构,我想在其他文件中也重复这个用于创build其他lambda函数的repo。 […]

使用AWS Lambda在NodeJS中找不到MySQL

我有下面的代码,我想要执行。 我试过要求mysql和node-mysql,它们都给我同样的错误: 码: var AWS = require("aws-sdk"); var mysql = require("mysql"); exports.handler = (event, context, callback) => { try { console.log("GOOD"); } catch (error) { context.fail(`Exception: ${error}`) } }; 错误: { "errorMessage": "Cannot find module 'mysql'", "errorType": "Error", "stackTrace": [ "Function.Module._load (module.js:417:25)", "Module.require (module.js:497:17)", "require (internal/module.js:20:19)", "Object.<anonymous> (/var/task/index.js:2:13)", "Module._compile (module.js:570:32)", "Object.Module._extensions..js (module.js:579:10)", "Module.load (module.js:487:32)", "tryModuleLoad […]