Tag: amazon web services

为什么我的Lambda函数超时,即使API网关callback已被调用?

我有一个AWS API网关方法,通过AWS Lambda代理请求。 但是,它在三秒钟后在日志中出现以下错误: 转换前的端点响应主体:{“errorMessage”:“2017-09-05T16:30:49.987Z 922186c0-9257-11e7-9db3-51921d5597a2任务在3.00秒后超时”} 因此,我继续检查我的Node 6.10 AWS Lambda函数,看看它为什么会超时。 我在每个函数调用之前和之后添加了日志logging。 令人惊讶的是,它做了所有它应该做的事情:称为API网关callback,然后对数据库运行一个查询。 所有需要0.6s的,据我所知,没有其他的代码需要运行。 尽pipe如此,它似乎继续在三秒钟的其余时间运行,然后超时。 (这是,我想,因为我打开数据库的连接。) 我在callback调用之前和之后放置的日志语句表明,该调用在半秒内执行。 然而,这种回应似乎并没有使它成为API网关,而三秒钟后的错误呢。 这可能是什么原因,我该如何debugging呢?

在保留期限后自动化红移截断/删除数据

我有一个红移表,它存储了大量的数据。 每个周末我都会去手工使用Workbench TRUNCATE上周我不再需要的数据。 我手动必须运行 DELETE FROM tableName WHERE created_date BETWEEN timeStamp1 AND timeStamp2; 是否有可能有办法告诉表或有一些过期策略,每个星期天都会删除我的数据? 如果没有,是否有办法自动化每7天的删除过程? 在nodeJS中执行此操作的某种shell脚本或cron作业。

aws sdk ec2.describeInstances未列出所有EC2实例

我正在使用aws-sdk列出其IAMangular色为The_Name_of_My_IAM_Role所有正在运行的EC2实例。 const AWS = require('aws-sdk') let credentials = new AWS.SharedIniFileCredentials({ profile: 'my_profile' }) AWS.config.credentials = credentials AWS.config.update({ region: 'ap-northeast-1' }) const ec2 = new AWS.EC2() let params = { Filters: [ { Name: 'iam-instance-profile.arn', Values: [`arn:aws:iam::123456789123:instance-profile/The_Name_of_My_IAM_Role`] }, { Name: 'instance-state-name', Values: ['running'] } ] } ec2.describeInstances(params, (err, data) => { if (err) { console.log(`describeInstances error: […]

如何使用非主键字段查询DynamoDB?

我在我的dynamoDB表中有以下数据。 这是我的代码: const userStatusParams = { TableName: process.env.USERSTATUS_TABLE, KeyConditionExpression: "loggedIn = :loggedIn", ExpressionAttributeValues: { ":loggedIn": true } }; var usersResult; try { usersResult = await dynamoDbLib.call("query", userStatusParams); console.log(usersResult); }catch (e) { console.log("Error occurred querying for users belong to group."); console.log(e); } 亚马逊返回这个错误: { ValidationException: Query condition missed key schema element: userId at Request.extractError … 我怎样才能返回logging在所有logging==真? […]

查询条件丢失关键架构元素:validation错误

我正在试图使用下面的代码查询dynamodb : const AWS = require('aws-sdk'); let dynamo = new AWS.DynamoDB.DocumentClient({ service: new AWS.DynamoDB( { apiVersion: "2012-08-10", region: "us-east-1" }), convertEmptyValues: true }); dynamo.query({ TableName: "Jobs", KeyConditionExpression: 'sstatus = :st', ExpressionAttributeValues: { ':st': 'processing' } }, (err, resp) => { console.log(err, resp); }); 当我运行这个,我得到一个错误说: ValidationException: Query condition missed key schema element: id 我不明白。 我已经将id定义为jobs表的分区键,并且需要find所有处于processing状态的作业。

无法连接到Amazon EC2上托pipe的节点networking服务器

我正在Amazon EC2上运行一个节点应用程序。 该应用程序包括一个简单的Web服务器,旨在为索引页面,但它不起作用。 这是服务器代码: var http = require('http'), fs = require('fs'), io = require('socket.io'), index; fs.readFile('client.html', function(err, data){ if (err){ throw err; } index = data; }); var server = http.createServer(function(request, response){ response.writeHeader(200,{"Content-Type": "text/html"}); response.write(index); response.end(); }).listen(1223); EC2被分配了公共IP地址54.187.31.42 。 我运行该应用程序,打开我的浏览器,连接到54.187.31.42:1223期待被服务的网页,什么也没有。 我的服务器代码有什么问题? 我用这个答案中的代码片断来检查运行应用程序的EC2的IP,奇怪地得到172.31.3.67 – 为什么返回的地址与Amazon分配给机器的地址不同? 因此,尝试连接到172.31.3.67:1223也失败。 直接从亚马逊开发控制,如果这有助于确认它不是一个服务器IP被错误或什么的问题。

当我在Amazon S3中将Quiet设置为true以在deleteObjects()方法中启用安静模式时会发生什么?

我在Node.js中使用Amazon S3,我想从一个存储桶中删除一个或多个文件。 我想知道当我将Quiet参数设置为true时会发生什么。 var params = { Bucket: 'STRING_VALUE', /* required */ Delete: { /* required */ Objects: [ /* required */ { Key: 'STRING_VALUE', /* required */ VersionId: 'STRING_VALUE' }, /* more items */ ], Quiet: true || false }, MFA: 'STRING_VALUE' }; s3.deleteObjects(params, function(err, data) { if (err) console.log(err, err.stack); // an error […]

如何使用node.js成功实现一个aws实例的http POST?

我正在设置一个aws实例来侦听HTTP POST。 当作为本地主机运行服务器和客户端时,一切似乎工作正常。 然而,当运行试图与客户端发送一个aws实例与服务器运行,我得到一个connect ECONNREFUSED错误。 我正在使用的aws实例(ubuntu服务器)具有对所有ip地址开放的端口80和8080。 我正在使用pm2模块来保持服务器运行。 尽pipe使用pm2给出了相同的错误。 服务器设置:( aws实例terminal) $ sudo apt-get install git $ curl -sL https://deb.nodesource.com/setup | sudo bash – $ sudo apt-get install -y nodejs $ sudo npm install pm2 -g –unsafe-perm 使用节点启动服务器: $ node nodeServerTest.js 使用pm2启动服务器: $ pm2 start nodeServerTest.js –name "nodeServerTest" -i max 服务器代码: // nodeServerTest.js var http = […]

Nodejs – 使用MochatestingAWS

我在为使用AWS和graphicsmagick的以下nodejs代码编写testing时遇到了麻烦。 我试图search如何编写async的waterfall方法testing的例子,但没有任何明确的结果。 // dependencies var async = require('async'); var AWS = require('aws-sdk'); var gm = require('gm').subClass({ imageMagick: true }); var util = require('util'); // get reference to S3 client var s3 = new AWS.S3(); exports.AwsHandler = function(event, context) { // Read options from the event. console.log("Reading options from event:\n", util.inspect(event, {depth: 5})); var srcBucket = […]

如何设置使用Amazon Lambda在S3中创build的文件的打开/下载权限?

我有一个成功将文件写入Amazon S3存储桶的Amazon Lambda函数。 但是,默认情况下,这些文件不能公开访问。 如何在写入时自动访问它们? 有没有办法改变桶本身,使所有的项目是公开可读的(打开/下载)? 或者,我已经收集到这可以通过IAMangular色策略来完成。 这是我的: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*" ] } ] } 我认为这是“资源”,需要改变,但我不知道如何。 为了完整性(如果有其他人需要做类似的事情,并且涉及到Lambda文档),这里是我在客户端的ajax调用(我正在向S3写一个图像,并且需要返回文件名): $.ajax({ url: 'https://mylambdafunctionurl/', type: 'POST', crossDomain: true, contentType: 'application/json', data: JSON.stringify(data), dataType: 'json', […]