Tag: aws lambda

DynamoDB,使用AWS Lambda(NodeJS运行时)映射值的dynamicprimefaces更新

我正在试图弄清楚如何在源数据包含映射值的项目上执行primefaces更新,这些映射的键值是dynamic的。 如果你看下面的示例数据,我想弄清楚如何在同一个项目上对BSSentDestIp和BSRecvDestIp中的值进行primefaces更新。 我正在阅读文档,但我唯一能find的就是list_append ,这会给我一个附加的键/值列表,我将需要遍历和总结。 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html input数据示例: { "RecordId": 31, "UUID": "170ae748-f8cf-4df9-6e08-c0c8a5f029d4", "UserId": "username", "DeviceId": "e0:cb:4e:53:ae:ff", "ExpireTime": 1501445446, "StartTime": 1501441846, "EndTime": 1501441856, "MinuteId": 10, "PacketCount": 1028, "ByteSum": 834111, "BSSent": 98035, "BSRecv": 736076, "BSSentDestIp": { "151.101.129.69": 2518, "192.168.1.254": 4780, "192.168.1.80": 14089, "192.33.31.162": 2386, "54.239.30.232": 21815, "54.239.31.129": 6423, "54.239.31.69": 3255, "54.239.31.83": 18447, "98.138.253.109": 3020 }, "BSRecvDestIp": { "151.101.129.69": […]

在aws上的ETagcaching

我需要将由node restify支持的API Server迁移到使用AWS提供的API Gateway + lambda函数的东西。 API服务器(GET / POST简单的东西,不涉及数据库)作为代理服务器与CMS系统交谈,为客户端提取数据。 目前, etagcaching是通过调整中间件完成的。 我想知道我需要做什么才能在新的解决scheme(API网关+ lambda)中实现同样的目标? 一个侧面说明,我想到的是 – 保存从CMS的响应到S3 / CloudFront与启用ETagcaching机制,让他们确定是否可以使用浏览器上的caching响应。 我想知道这是否是一个好的做法? 谢谢

在AWS Lambda中实例化AWS Helper类时是否需要指定区域?

如果我想从AWS Lambda调用AWS SES,那么在实例化AWS Helper类时通常会写下列内容: var ses = new aws.SES({apiVersion: '2010-12-01', region: 'eu-west-1'}); 我想知道,我是否真的需要指定AWS区域? 或者AWS SES帮助程序类将在运行AWS Lambda函数的区域中运行。 这里最好的做法是什么? 如果我忽略这个,可能会遇到问题吗?

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函数,因此不能正确模拟环境。

AWS Lambdacallback节点js太快了

我正在尝试复制AWS文档( 链接 )中的缩略图示例。 我想在创build后立即使用这个缩略图。 我希望context.done()callback就足够了。 callback给了我一个很好的回应,但它是太快了。 图像的大小并不总是在s3桶中存储。 在调用lambda函数时,我特别将调用types设置为“Event”,以便在函数完成resize后callback。 考虑到文档中的例子,等待整个lambda函数完成的方法是什么? 现在在我的应用程序中调用lambda函数的函数如下所示: AWS.config.loadFromPath('./configs/config.json'); var lambda = new AWS.Lambda(); var params = { FunctionName: 'resizeImage', InvocationType: 'Event', Payload: JSON.stringify({key: req.body.key}) }; lambda.invoke(params, function (err, data) { if (err) { console.log(err, err.stack); // an error occurred } else { console.log(data); // successful response next(); } });

亚马逊Alexa技能Lambda代码将不会执行

我正在尝试在NodeJS中编写Amazon Alexa技能的Lambda函数。 Alexa就是那种响应你的声音的圆柱形扬声器,而“技巧”基本上就是一个语音应用程序。 该函数从Alexa设备获取JSONinput并创build一个响应,然后将新的JSON发送回设备进行输出。 这个代码应该从BTC-e JSON中将比特币拉到美元汇率,提取“平均值”并将其输出到Alexa设备。 我很久没有做任何编码,所以请原谅任何愚蠢的错误。 我拿了示例代码,并试图修改它为我的目的,但在AWS中执行时出现此错误: { "errorMessage": "Unexpected identifier", "errorType": "SyntaxError", "stackTrace": [ "Module._compile (module.js:439:25)", "Object.Module._extensions..js (module.js:474:10)", "Module.load (module.js:356:32)", "Function.Module._load (module.js:312:12)", "Module.require (module.js:364:17)", "require (module.js:380:17)" ] } 我的代码在这里 。 我有一个感觉,问题是在84-106行,因为这是我的大部分工作。 感谢您的帮助!

使用javascript SDK在lambda上启用SNS事件源

我正在尝试使用JavaScript AWS SDK在lambda上创buildSNS事件源。 我有以下代码片段: var permissionParams = { FunctionName: "MyFunction", Action: "lambda:Invoke", Principal: "sns.amazonaws.com", StatementId: "snsinvoke", SourceArn: "MyArn" }; lambda.addPermission(permissionParams, function (err, data) { if (err) { console.log(err); } else { console.log(data); } }); 这与订阅该主题的另一个调用相结合在lambda中创build事件源,但是它被禁用。 是否有另一个电话,我可以使它启用或有一种方法来启用它,当我添加它?

Aws lambda弄乱了我的编码

我在用着 https://clifff.com/2015/10/01/2015-failed-experiments-with-aws-lambda/ + https://www.twilio.com/blog/2015/09/build-your-own-ivr -with-AWS-λ-亚马逊API的网关和twilio.html 在aws lambda上创build一个图像大小调整服务…我解决了第一篇文章被卡住的内容types问题,但编码看起来像是一个死胡同…任何帮助将不胜感激! ruby Base64.decode64("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7") – >工作形象 GIF89a\u0001\u0000\u0001\u0000\x80\u0000\u0000\u0000\u0000\u0000\xFF\xFF\xFF!\xF9\u0004\u0001\u0000\u0000\u0000\u0000,\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0002\u0001D\u0000; api网关 $util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7") – >破碎的图像 GIF89a\u0001\u0000\u0001\u0000 \u0000\u0000\u0000\u0000\u0000 ! \u0004\u0001\u0000\u0000\u0000\u0000,\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0002\u0001D\u0000;

在nodejs中解压缩数据

我正在尝试使用下面的代码来解压缩base64解码的缓冲区对象,但callback函数没有得到执行。 有人能告诉我我在这里失踪吗? function (event, context) { event.Records.forEach(function (record) { // Kinesis data is base64 encoded so decode here var payload = new Buffer(record.kinesis.data, 'base64'); zlib.gunzip(payload, function (err, data) { console.log("new data2"); if (!err) { console.log("new data3"); console.log(data); } else { console.log("new data4"); console.log(err, err.stack); } }); }); context.done(); };