Tag: aws lambda

节点js中的代码lambda:从事件数据中获取s3密钥的最后修改date

我正在使用lambda中的节点js代码。 一个函数 当创build一个S3对象时传递事件数据 var record = event.Records[0]; var bucket = record.s3.bucket.name; var key = record.s3.object.key; 我怎样才能得到s3键的最后修改date来创build一个文件夹并粘贴在其​​中的密钥。 如果最后修改date是: Mon Feb 22 14:46:23 GMT+530 2016 , 那么文件夹名称必须是: Bucketname/2016/02/22/

如何从s3存储和检索dynamodb中的照片url?

我正在将许多图像存储在AWS S3中。 我需要从S3中检索URL并将其存储在DynamoDB中。 我不清楚如何通过NodeJS做到这一点。 有人可以解释一下如何使用Lambda函数吗?

AWS Lambda连接到Internet

TL; TR 我试图从AWS Lambda连接到互联网,我有一个NAT网关的私人子网,但仍然无法连接到互联网… 完整的问题 所以我试图用我的AWS Lambda函数访问互联网。 我已经尝试了Java和NodeJS 4,没有运气。 我有一个私人VPC与子网:10.0.10.0/24 正如你所看到的,我已经添加了一个规则到我的NAT网关: 我像这样configuration了我的AWS Lambda: select该子网(10.0.10.0)和一个开放的安全组(入站和出站) 但是,当我尝试从互联网下载某些东西时,lambda超时: 'use strict'; console.log('Loading function'); var http = require("http"); exports.handler = (event, context, callback) => { //console.log('Received event:', JSON.stringify(event, null, 2)); console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); var options = { host: 'www.virgilio.it', port: 80, path: '/' }; […]

closuresmongoose连接Lambda

我在Amazon Web Services中使用Lambda函数发现了一个奇怪的行为。 我使用的是Node 4.3和Mongoose 4.4.17 这个想法是testing和玩Lambda的function。 我做一个简单的模型,我把它存储在一个Ec2实例。 代码工作正常,直到我尝试closures连接。 我知道,更好的做法是“不要把你连接起来,让游泳池处理”。 那么,这适用于一个正常的应用程序,但Lambda是一个无状态函数,所以如果我不closures连接,这保持开放,消耗资源。 如果每秒有数千个请求,这可能会非常糟糕。 所以,这是我的代码。 'use strict'; let mongoose = require('mongoose'); //I add this options, because this close my connections //faster than the 30 min by default let options = { server: { socketOptions: { keepAlive: 30000, connectTimeoutMS: 30000 } }}; let db = mongoose.createConnection('mongodb://myInternalServerEC2:27017/myDB', options); let […]

Lambda超时与S3通信

我正在尝试使用Lambda简单列出S3存储桶中的所有文件 代码如下所示: var AWS = require('aws-sdk'); var s3 = new AWS.S3(); exports.handler = (event, context, callback) => { s3.listObjectsV2({ Bucket: "bucketname", }, function(err, data) { console.log("DONE : " + err + " : " + data); callback(null, 'Hello from Lambda'); }); }; 使用上述,我从来没有得到“完成”打印。 日志除了超时以外不显示任何信息。 有什么问题我可以在这里做? 我会认为,至less错误会在“完成”部分显示。

你如何使用javascript promisestring中的.then函数中的参数调用函数?

我正在将使用node.js编写的AWS lambda函数转换为使用promise而不是callback函数。 我用处理程序代码将所有的函数包装在处理程序中。 我试图打破简单的function,所以我可以在处理程序代码中尽可能平坦的承诺链。 我卡在一个点,我有一个.then(),返回一个值,我需要传递给我的一个函数,这已被promisified,以及其他参数。 我search了高和低,但找不到这样做的语法的一个例子。 我甚至不知道我在做什么是正确的。 我发现的所有文章都解释了简单的承诺链,只通过.then()方法返回一个值。 没有一个能够将其转化为另一个function。 以下是我到目前为止: var bbPromise = require("./node_modules/bluebird"); var AWS = require("./node_modules/aws-promised"); var rp = require("./node_modules/request-promise"); var moment = require('./node_modules/moment.js'); var dynamodb = new AWS.dynamoDb(); exports.handler = function(event, context) { "use-strict"; // This gets a token that will be used as a parameter for a request function getToken(params){ return […]

为什么节点认为这不是一个函数,但JavaScript有时是好的?

我有一个更大的项目,我正在通过我configuration的API网关在AWS中调用Lambda。 在Lambda我试图dynamic调用基于API请求上的查询string参数通过使用以下variables: var functionToCall = event.queryStringParameters.tech; console.log("functionToCall is " + functionToCall); global[functionToCall](event, output); 不幸的是我得到一个错误 TypeError: global[functionToCall] is not a function 我已经重写了这个使用窗口来演示它在线和取决于我是否运行在jsbin或jsfiddle我得到不同的结果。 以下在jsbin中的作品: 'use strict'; var functionArray = ["one", "two", "three"]; var randFunction = functionArray[Math.floor(Math.random() * functionArray.length)]; function one() { console.log("function one called"); }; function two() { console.log("function two called"); }; function three() { console.log("function three […]

如何使用无服务器框架引用不在根文件夹中的函数?

我正在使用无服务器框架1.x,我想定义我的serverless.yml引用位于另一个文件夹(不在根级别)的函数。 例如,在下面的文件夹结构中,我想引用在文件夹函数内的function1.js文件中定义的handler() 函数 。 serverless.yml functions/ function1.js function2.js function3.js package.json node_modules/ .. 我所看到的所有示例都考虑以下基本情况:文件位于根目录中: serverless.yml handler.js 在哪里serverless.yml文件被定义为: functions: hello: handler: handler.hello

Nodejsasynchronous问题,同时解密aws kms键

在node6中有一个lambda函数,它有5个envvariables,全部用aws kmsencryption。 我有以下方法,它采用encryption密钥并返回解密密钥。 function decryptKMS(encryptedKey) { console.log('inside decryptkms'); const kms = new AWS.KMS(); kms.decrypt({ CiphertextBlob: new Buffer(encryptedKey, 'base64') }, (err, data) => { if (err) { console.log('Decrypt error:', err); return callback(err); } var result = data.Plaintext.toString('ascii'); return result; }); } 在我的处理程序中,我正在执行此操作以获取解密的密钥。 decryptedkey1 = decryptKMS(encryptedkey1); decryptedkey2 = decryptKMS(encryptedkey2); decryptedkey3 = decryptKMS(encryptedkey3); decryptedkey4 = decryptKMS(encryptedkey4); decryptedkey5 = […]

使用AWS lambda实现推送通知

我指的是图 在这种情况下,NodeJS用作运行时间,AWS Lambda用作事件通知程序(更新来自其他lambda或DB)。 我的挑战是,“用户浏览器”也可以是移动客户端。 “API”应该起到一种服务的作用,允许客户(移动或networking)订阅,取消订阅或发布数据,没有别的。 lambda可以作为具有“推送事件通知”function的API直接客户端吗? 有没有解决scheme,样本工作/源代码可以用作POC? 接下来的问题是,自从它变成有状态(需要内存来记住客户端连接的状态),我怎么能扩展这样的架构呢? 或者,它有可能是坚持客户端连接数据库(使用框架如websocket或socket.io)?