小编Mar*_*k B的帖子

如何从AWS Lambda函数返回存储在AWS S3存储桶上的HTML页面

我目前的情况:我有一个带有资源/登录的AWS API网关.当此资源上存在GET请求时,将调用AWS Lambda函数,该函数将返回HTML登录表单.登录表单的HTML写在Lambda函数的JavaScript字符串中(我在Lambda函数中使用Node JS).提交表单时,相同的资源 - 使用POST方法的/ login调用另一个验证登录的Lambda函数.如果登录失败,它将返回带有验证错误消息的HTML表单,但同样,HTML代码也会写入JavaScript字符串中.

我的问题:是否可以在AWS S3存储桶中存储HTML文件,因此当我点击/登录时,API网关调用Lambda函数,该函数然后从S3存储桶获取HTML页面并将其返回给用户?当表单验证失败时,我想从S3存储桶返回相同的HTML并添加错误消息.

是否可以通过这种方式互连这些组件?我正在努力的部分是在S3上存储HTML并从Lambda访问它.

amazon-s3 amazon-web-services aws-lambda

3
推荐指数
2
解决办法
2284
查看次数

如何在aws lambda函数中使用setInterval

使用 setInterval 函数连续调用相同的 lambda 函数时,我遇到了困难。

拉姆达函数

var MongoClient = require('mongodb').MongoClient
    , format = require('util').format;

function funUpdateCommand(event,context,callback){

var mongoUrl='mongodb://**.**.**.**:*****/DBname';
// var mongoUrl='mongodb://127.0.0.1:27017/DBname';

MongoClient.connect(mongoUrl, function(err, db) {
    
    if(err) throw err;

var collection = db.collection('device');

var interval = setInterval(function() {
	collection.find({"deviceCommand.command":"getAudio","deviceCommand.timestamp":{ $lte: new Date((new Date)*1 - 60000*2)}}).toArray(function(err, results) {         
		        if(err){
		        	console.log(err);
		        }else{
			        for(var i=0;i<results.length;i++){
				        collection.update({_id:results[i]._id},{$set:{"deviceCommand.command":" "}},function(err, results) {
							
					});	
			    } 	
		    }
	    });
    }, 5000);
});

context.succeed("Successfully uploaded");

}

exports.handler=funUpdateCommand;
Run Code Online (Sandbox Code Playgroud)

我正在尝试更新 mongoDB 中的一些文档,我需要将 aws lambda 函数作为连续后台作业运行,但是当使用 setInterval 时它会返回超时错误。

如何使用 setInterval 连续运行我的 aws lambda 函数?

javascript mongodb amazon-web-services node.js aws-lambda

3
推荐指数
1
解决办法
1万
查看次数

从cloudwatch日志组中的日志写入触发lambda函数

我已经设置了一些AWS CloudWatch代理以将日志发送到CloudWatch日志组,而我现在要做的就是将它们放入Elasticsearch集群(在ec2上)。理想情况下,我想做的是编写一个lambda函数,将其解析然后将其发送到elasticsearch,而且还要在将消息写入日志组时触发lambda函数。是否可以从cloudwatch日志组触发lambda?

amazon-web-services aws-lambda

3
推荐指数
1
解决办法
3414
查看次数

Amazon AWS Lambda Alexa HTTP获取问题

我继续使用Amazon Lambda和alexa技能工具包获得以下代码的问题.我花了无数个小时在这上面,无法让它发挥作用.我一直收到这条消息,无法弄清楚为什么http get失败了."请稍后再试".它甚至不打印控制台消息.

var Alexa = require('alexa-sdk');
var http = require('http');
var APP_ID = "omitted";     
var SKILL_NAME = 'omitted';

var options = {
    host: 'api.forismatic.com',
    path: '/api/1.0/?method=getQuote&lang=en&format=text',
    method: 'GET'
};

exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.APP_ID = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};

var handlers = {
'LaunchRequest': function () {
    this.emit('Inspiration');
},
'IntentRequest': function() {
    this.emit('Inspiration');
},
'InspirationIntent': function () {
    this.emit('Inspiration');
},
'Inspiration': function () {
    var speechOutput = '';
    var text = ''; …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services alexa node.js aws-lambda alexa-skills-kit

3
推荐指数
1
解决办法
2049
查看次数

在S3中我的Lambda代码存储在哪里

我已阅读Lambda FAQ,它说它将我的代码存储在S3中并且已加密.

S3中存储的位置,我可以解密它来编辑我的代码吗?

amazon-s3 amazon-web-services microservices aws-lambda

3
推荐指数
2
解决办法
3526
查看次数

(nodeJS)S3对象的Content-Type:手动设置为'image/jpeg'但在S3控制台中显示为'application/octet'

我有一个JPEG缓冲区,可以从S3成功上传和下载.但是,我正在尝试通过Messenger API发送它,当它以编程方式访问时,Messenger会抛出错误,因为根据S3控制台,Content-Type图像的实际情况是application/octet-stream.

我手动输入的元数据显示在x-amz-meta-content-type.根据AWS文档,这是默认行为.我怎么可能会覆盖它来获得image/jpegContent-Type

我的代码:

var s3 = new AWS.S3();
var params = {
  Body: buffer,
  Bucket: <bucket>,
  Key: <key>,
  Metadata: {
    'Content-Type': 'image/jpeg'
  }
};
s3.putObject(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else  {
    console.log(data);
  }
})
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 amazon-web-services node.js

3
推荐指数
1
解决办法
2092
查看次数

AWS Lambdas 的本地开发服务器

是否有本地运行 AWS Lambda 的开发服务器?我的要求是

  • nodejs服务器,ruby除了和软件包go之外不需要安装任何东西nodenpm
  • 创建一个我可以通过wget/curl或 API 测试工具查询的服务器,以将各种事件发送到
  • 我应该能够指定js服务器用作 lambda 的文件,并且当我更改该文件时服务器应该重新启动/更新

amazon-web-services node.js aws-lambda

3
推荐指数
1
解决办法
1747
查看次数

Node.js AWS EC2上的RESTful API服务器与AWS API网关

我有一个node.js RESTful API应用程序.没有Web界面(至少截至目前),它只是用作其他服务调用的API端点.

我想在亚马逊的AWS云上托管它.我在两个选项之间感到困惑

  1. 使用普通的EC2托管,只提供托管URL作为API端点

要么

  1. 使用Amazon的API网关并在AWS Lambda上运行我的代码

或者我可以在EC2上运行我的代码并使用API​​网关吗?

当涉及到node.js RESTful api应用程序时,我对EC2和API网关的不同之处感到困惑

amazon-ec2 amazon-web-services node.js aws-lambda aws-api-gateway

3
推荐指数
1
解决办法
772
查看次数

EC2自动安装更新

我最近以DevOps工程师的身份加入一家公司,我的职责之一是在OpsWorks中配置基础架构(ELB后面的EC2实例与Aurora DB进行通信)。

我被要求审核有关应用更新的当前解决方案。

在阅读了一些答案之后,令我惊讶的是,如果我想将安全更新自动应用于我们的(Centos)EC2实例,那么这些选项是:

  1. Lambda作业启动一个新实例(将运行yum update),将其附加到ELB,然后终止“旧”实例
  2. cron作业添加到运行在每个实例(大约有十几个)百胜更新--security每一天左右
  3. 将自定义JSON添加到OpsWorks层,以便在每次部署后运行yum更新

每种方法都有很多利弊,所以我想知道“最佳实践”的共识,即定期自动更新多个实例。

注意:这些实例正在运行24/7 365(即,我们从不重启它们),根据实例的不同,代码部署的范围可以从每天到每月!

centos amazon-ec2 amazon-web-services aws-lambda

3
推荐指数
1
解决办法
852
查看次数

lambda + api网关什么时候实际向客户端发送响应?

目前我已经设置了一个从api网关端点触发的lambda函数.目标是通过形成响应并首先触发回调来保持响应时间较短,然后继续与sns交互以将工作传递给其他lambda函数.但是,当我对端点运行火焰计时,我注意到了一些奇怪的行为.主要是响应时间似乎不断增加,此外还有502和504响应代码返回但没有500响应代码(如果我理解正确,则表示调用限制,因为429响应在api网关中映射到500).如果我删除异步操作,我会看到合理的响应时间,并且没有错误.为什么这是观察到的行为,当实际触发响应时,在nodejs事件循环中项目排队的顺序是否不起作用,或者lambda只是等待事件队列在发送响应之前清空?如果是后者,则异步交互中的错误会导致502和504响应吗?

amazon-web-services node.js aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
1476
查看次数