我正在使用连接到MongoDB数据库的AWS Lambda / API网关创build一个RESTful API。 我读过与MongoDB的连接是相对昂贵的,所以最好的做法是在build立连接后保留一个连接,而不是为每个新的查询build立新的连接。 对于正常的应用程序来说,这非常简单,因为您可以在启动期间build立连接,并在应用程序生命周期中重新使用它。 但是,由于Lambda被devise为无状态,因此保持这种联系似乎不那么简单。 因此,我想知道什么是解决这个数据库连接问题的最好方法? 我每次调用Lambda函数时都被迫创build新的连接,还是有办法对这些连接进行缓冲/caching以获得更高效的查询? 谢谢。
是否可以从AWS Lambda函数连接到Redis ElastiCache群集? 我不知道这是一个configuration问题还是根本不可能。 PS:我从一个EC2实例做了testing,我可以连接到Redis节点。 此外,Lambda函数和Redis节点在相同的区域中。 更新(2015年10月9日): 亚马逊宣布VPC为AWS Lambdafunction。 详情在这里 这意味着我们现在可以访问VPC安全组后面的AWS资源,包括ElastiCache和RDS机器。 更新(2016年2月11日):亚马逊推出VPC for AWS Lambda。 https://aws.amazon.com/about-aws/whats-new/2016/02/access-resources-within-a-vpc-using-aws-lambda/
Node.js Alexa任务问题 我目前正在通过AWS Lambda编写一个Node.js Alexa任务,并且我一直在尝试编写一个函数,它从OpenWeather API接收信息并将其parsing为一个名为weather的variables。 相关代码如下: var request = require('request'); var weather = ""; function isBadWeather(location) { var endpoint = "http://api.openweathermap.org/data/2.5/weather?q=" + location + "&APPID=205283d9c9211b776d3580d5de5d6338"; var body = ""; request(endpoint, function (error, response, body) { if (!error && response.statusCode == 200) { body = JSON.parse(body); weather = body.weather[0].id; } }); } function testWeather() { […]
我正在尝试创build一个简单的lambda函数,并且遇到错误。 我的代码基本上是 console.log('Loading function'); exports.handler = function(event, context) { console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); context.succeed(event.key1); // Echo back the first key value // context.fail('Something went wrong'); } 在helloworld.js文件中。 我压缩起来,并在创build一个lambda函数部分作为zipfile upload,我不断收到此错误: { "errorMessage": "Cannot find module 'index'", "errorType": "Error", "stackTrace": [ "Function.Module._resolveFilename (module.js:338:15)", "Function.Module._load (module.js:280:25)", "Module.require (module.js:364:17)", "require (module.js:380:17)" ] } 有人有主意吗?
这是我正在努力工作的简化scheme: http请求 – >(网关API + lambda A) – > SQS – >(lambda B ?????) – > DynamoDB 所以它应该如下图所示:来自许多http请求的数据(例如每秒500个)被我的lambda函数A放入到SQS队列中。然后另一个函数B处理队列:读取多达10个项目(定期),并使用BatchWriteItem将它们写入DynamoDB。 问题是,我不知道如何触发第二个lambda函数。 应该频繁地调用,每秒多次(或者至less每秒一次),因为我需要从队列中的所有数据尽快进入DynamoDB(这就是为什么通过调度事件调用lambda函数B( 这里描述的不是一个选项) 为什么我不想直接写入DynamoDB,没有SQS? 这对我来说完全可以避免使用SQS。 我试图用SQS解决的问题是DynamoDB限制。 在使用AWS开发工具包(SDK)将数据写入DynamoDB的过程中,甚至不用自行节制,而是将数据写入DynamoDB时处理的方式:在逐个写入logging并限制数据logging时,AWS SDK会以静默方式重试写入,导致请求处理时间从http客户端视图。 因此,我想临时存储队列中的数据,发送响应“200 OK”返回给客户端,然后通过单独的函数获得队列处理,用一个DynamoDB的BatchWriteItem调用写入多个logging(返回未处理的项目而不是自动重试的节stream)。 我甚至希望丢失一些logging,而不是增加在DynamoDB中收到和存储的logging之间的延迟 UPD:如果有人感兴趣,我已经find了如何使aws-sdk在节stream的情况下跳过自动重试:有一个特殊的参数maxRetries 。 无论如何,要使用Kinesis如下所示
是否可以在AWS Lambda中构build一个创buildWebSocket并将数据发送到订阅应用程序的函数? 像这样的东西: John在手机中打开了应用程序SuperPhotoApp,但决定使用桌面浏览器将照片上传到SuperPhotoApp服务(S3 Bucket),此事件执行一个Lambda函数,创build一个socket.io服务器并将更新推送给所有订户,他的手机已经打开了应用程序,所以应用程序自动更新与新的照片。 这可以通过推送通知或Amazon SNS来完成,但是如果我需要实时行为,例如需要更新angular色位置的在线游戏,该怎么办? 如果Lambda无法实现这一点,有没有解决scheme可以使用桌面浏览器更新我打开的应用程序? 亚马逊EC2是唯一的select? 我读过它有缩放问题,这就是为什么我在评论Lambda。
我想使用AWS Lambdafunction生成video。 我遵循这里和这里find的指示。 我现在有以下过程来构build我的Lambda函数: 步骤1 启动Amazon Linux EC2实例并以root身份运行它: #! /usr/bin/env bash # Install the SciPy stack on Amazon Linux and prepare it for AWS Lambda yum -y update yum -y groupinstall "Development Tools" yum -y install blas –enablerepo=epel yum -y install lapack –enablerepo=epel yum -y install atlas-sse3-devel –enablerepo=epel yum -y install Cython –enablerepo=epel yum -y […]
我开始使用AWS Lambda,并试图从我的处理函数请求一个外部服务。 根据这个答案 ,HTTP请求应该工作得很好,我还没有发现任何其他文件。 (事实上,人们已经发布了使用Twilio API发送短信的代码 。) 我的处理程序代码是: var http = require('http'); exports.handler = function(event, context) { console.log('start request to ' + event.url) http.get(event.url, function(res) { console.log("Got response: " + res.statusCode); }).on('error', function(e) { console.log("Got error: " + e.message); }); console.log('end request to ' + event.url) context.done(null); } 我在CloudWatch日志中看到以下4行: 2015-02-11 07:38:06 UTC START RequestId: eb19c89d-b1c0-11e4-bceb-d310b88d37e2 […]
我正在构build基于AWS Lambda的监控工具。 给定一组指标,Lambdas应该能够使用Twilio API发送短信。 为了能够使用API,Twilio提供了一个账号SID和一个授权令牌。 我应该如何以及在哪里存储这些秘密? 我目前正在考虑使用AWS KMS,但可能还有其他更好的解决scheme。
亚马逊宣布AWS Lambda( http://aws.amazon.com/lambda/ )。 产品说明包括: 计划任务 AWS Lambdafunction可以由外部事件定时器触发,因此可以在定期维护时间或非高峰时段运行function。 例如,您可以触发AWS Lambdafunction,在非繁忙时段执行夜间归档清理。 当我读到这些时,我明白我终于可以有办法一贯地做“类似cron”的任务。 我想要在5PM每天运行一个特定的查询。 不过,我在文档中找不到这个地方。 他们只提及程序事件的触发器,或其他AWS服务的事件。 我误解了吗? 或者可以有人指向我的文档?