Tag: amazon web services

查询没有密钥的数据(AWS DynamoDB SDK Nodejs)

我刚开始使用适用于DynamoDb的AWS Nodejs SDK 我有点困惑,我怎么可以不使用分区键访问特定的数据。 我们假设我的表中只有1个项目,属性“id”设置为我的分区键 表名称:用户 { "full_name": { "S": "John Cena" }, "id": { "S": "ABC123" }, "password": { "S": "youcantseeme" }, "username": { "S": "AndHisNameIs" } } 下面的代码将返回上面的对象,如果我查询使用我的密钥 顺便说一句我正在使用dynamodb.query(params,function(err,data){} 使用键search let params = { TableName : "Users", KeyConditionExpression: "#myid = :id", ExpressionAttributeNames:{ "#myid": "id" }, ExpressionAttributeValues: { ":id": { S: "ABC123" } } […]

AWS Lambda查询二级索引

以下是DynamoDB JSON对象上的AWS lambda中的node.js查询。 用户ID是没有sorting键的主键。 GeoHash是一个辅助键,索引名称为“GeoHash-index”。 调用成功没有错误,但不会导致返回任何内容。 有可能下面的testing数据是错误的,因为它没有提供与索引名称的任何连接,但是我是AWS / noSQL的新手,有点失落。 var AWS = require('aws-sdk'); var docClient = new AWS.DynamoDB({apiVersion: '2012-08-10'}); exports.handler = function(event,context,callback) { console.log(JSON.stringify(event, null, ' ')); var tableName = "table1"; // getItem docClient.getItem({ TableName: tableName, IndexName: "GeoHash-index", KeyConditionExpression: "GeoHash = :geohash", ExpressionAttributeValues: {":geohash": "dpz886gb0tb0"} }), function(err,data){ if(err){ callback(err); } else { callback(null,data); } } […]

AWS Lambda函数在完成请求之前退出

我正在尝试遵循S3和Lambda的AWS指南 http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html 我在手动testing阶段,但是当我尝试运行testing时,我得到“errorMessage”:“在完成请求之前退出进程”。 在日志中,失败点与async.waterfall代码有关。 当我运行Lambda函数时,它会得到我的示例图像,resize并将其放入新的S3存储桶。 然后它看起来像asynchronous试图find一个未定义的“nextTask”运行。 我从来没有使用过asynchronous,所以我不知道如何解决这个问题。 cloudwatch日志文件给了我这个 2016-09-16T18:36:44.011Z 836d0280-7c3c-11e6-933a-9b5b3a5e8dd8 TypeError: undefined is not a function at /var/task/ResizeImages.js:98:13 at /var/task/node_modules/async/dist/async.js:486:20 at nextTask (/var/task/node_modules/async/dist/async.js:5008:33) at Response.<anonymous> (/var/task/node_modules/async/dist/async.js:5015:17) at Response.<anonymous> (/var/task/node_modules/async/dist/async.js:339:31) at Response.<anonymous> (/var/task/node_modules/async/dist/async.js:847:20) at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:355:18) at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20) at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10) at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:615:14) 要安装asynchronous(和imageMagik),我只是使用该命令 npm install async gm 在我的node_modules文件夹里面。 我使用的示例节点脚本是在这里,第98行被评论。 // dependencies var async […]

如何使用nodejs设置HTTP服务器进行日志logging?

我需要为我的启动安装日志logging服务。 我和我的团队没有时间和资源(金钱)来部署日志的专用工具。 不过,我需要运行用户行为分析。 当我要学习分析位并实现它时,我需要logging用户活动,以便稍后可以抽出数据并进行math计算。 我正在为我的主应用程序(这是一个Web服务)使用基于SQL(RDBMS)的设置,并计划在DynamoDB(AWS)中logging用户活动。 另外,我打算设置一个本地(在同一台服务器上)Node.Js服务器,它可以处理来自基于PHP的应用程序的日志请求, 以确保日志logging活动在另一个进程中运行,并且处理得当,而不会崩溃或减慢主服务器代码。 这里的想法是 – 当用户发出请求时,PHP应用程序将调用NodeJS服务器。 NodeJS服务器将在请求排队的同时立即接受请求并返回 (比如说200个其他请求),并且PHP应用程序将继续为请求提供服务。 NodeJS服务器将继续logging队列中的所有内容。 我计划这样做的原因是 – NodeJS在单线程上运行,并且是基于事件循环的 – 因此,如果突然出现stream量高峰,日志请求将排队,数据将最终发送到Dynamo,而不会使PHP应用程序等待确认。 注意 :当我说用户活动 ,我的意思是应用程序级日志logging,如: 来自ABCD IP地址的用户X在2016-09-10 14:21:22试图访问ID为123的文章 用户Y在2016-09-10 18:30:02发表评论#234文章#987使用ABC应用程序。 用户C从EFGH IP地址login到Web界面。 当然,数据将采用JSON格式,服务器将调用AWS SDK。 在这里,NodeJs服务器将基本上充当日志代理。 基于到目前为止的想法/情况,我有以下问题: 是否决定使用DynamoDB进行logging请求还是我犯了一个错误? 该服务符合我的预算。 在这种情况下,NodeJS有什么样的限制? nodejs可以吗? 我应该使用什么Node模块? HTTP服务器会做还是有模块公开可用于这种情况? 如何确保该服务器只侦听来自同一台计算机的请求(环回)?

Amazon SQS不向我的工作者实例提供完整的消息

我试图排队和SQS处理请求。 我已经在弹性beanstalk上使用Node.JS worker设置了它,当从另一个框中添加消息时,它自动从SQS获取httppost。 问题是,我无法从http post中获取所有必要的数据,从队列中删除消息。 我看到的唯一数据是我自己在正文中input的消息数据,但没有MessageId或ReceiptHandle。 当我手动调用SQS.receiveMessage(queuerurl,callback)时,我能够获得这些属性,但前提是我没有设置自动http发布。 当我将SQS发布给我的工作人员时,消息立即进入队列,然后进入一个不可见的“正在运行”状态,从而防止使用SQS.receiveMessage(queuerurl,callback)传递任何消息。 任何人都可以解释我在这里失踪? 我是否误解SQS提供的“自动发送消息”? 谢谢您的帮助

使用node.js更新expression式上的发电机数据库错误

我需要更新我的aws-dynamo数据库上的列表。 我用分区键创build了一个表:email。 然后iam成功地将一些电子邮件ID插入到表中。 现在我的桌子是这样的 电子邮件 manaf1@gmail.com manaf2@gmail.com manaf3@gmail.com 然后,我试图用新的关键“细节”更新表,它的值是一个列表。 这是我的代码 var AWS = require("aws-sdk"); var params = { TableName: "manaftable1", Key: { email: "manaf1@gmail.com" }, UpdateExpression: "set #details = list_append (#details, :detailsinput)", ExpressionAttributeNames: { "#details": "details" }, ExpressionAttributeValues: { ":detailsinput":{ "id": "1","mob": "978956" } } }; var docClient = new AWS.DynamoDB.DocumentClient(); docClient.update(params, function (err, data) […]

直接到s3 /客户端file upload。 用这种方法是否存在将未使用的文件存储在s3存储桶中的问题?

我正在查看由heroku(对于NodeJs应用程序)build议通过服务器签署s3文件的这个教程,然后直接从客户端处理上传: https://devcenter.heroku.com/articles/s3-upload-node 我想知道很多未使用的文件存储在s3存储桶中的可能性。 在heroku教程中,他们运行一个用户编辑场景。 他们指出: 当用户select要上传的图像时,上传到S3的处理将自动与本文前面介绍的过程asynchronous处理。 一旦上传完成并成功,图像预览会随着所选图像而更新。 然后用户点击“提交”button,该button将上传图像的用户名,名称和URL发布到要检查和/或存储的节点应用程序。 如果之前没有用户上传图片,则会发布默认的头像图片url。 那么,如果用户select图像,然后点击另一个页面而没有完成并提交用户configuration文件信息呢? 这只是一个浪费的文件存储在你的s3桶? 我在我的平均应用程序中使用类似的方法,在提交: 我上传文件到S3。 然后,承诺,一旦上传完成,我提交用户的个人资料信息/岗位s3的url到服务器。 我有一个类似的担心,如果用户离开之前承诺调用或有连接问题 – 是否有存储未使用的文件的问题? 这是处理这个问题的典型方式吗?这只是风险的一部分?

AWS DynamoDB查询不对BOOL值进行筛选

我有一个用GUI创build的用户表,给出了电子邮件的分区键,它是一个string。 然后我用aws lambda来做一个putItem,它有: email (string) test@testing.com deleted (BOOL) false 这工作得很好。 然后我试图用lambda查询它使用以下参数和查询: var params = { TableName : 'Users', KeyConditionExpression : 'email = :email', FilterExpression : 'deleted = :deleted', ExpressionAttributeValues : { ':email' : email, ':deleted': { BOOL: false } } }; docClient.query(params, function(err, data) { if (err) return fn(err); else { console.log("GetItem succeeded:", JSON.stringify(data, null, […]

在Amazon AWS EC2上托pipeWeb应用程序

我正在本地开发一个Web应用程序。 不过,我想在Amazon EC2实例上托pipe最终产品。 我已将Web应用程序移至EC2实例,并能够运行该应用程序; 现在正在监听端口8081。 我不明白的是如何让互联网上的用户访问在EC2实例的端口8081上运行的Web应用程序。 我已经尝试将域名redirect到NameCheap DNS(我们购买域名的地方)EC2实例的IP地址,无济于事。 我怀疑我需要做的事情之一是设置EC2权限组的权限,但是我应该将其设置为? 非常感谢帮助! 谢谢!

Amazon Cloudfront超时错误

我正在使用mongodb数据集生成器生成数据的节点项目,我已经将我的数据生成服务器代码添加到了AWS的Lambda,我已经公开到AWS的api网关。 所以现在的问题是,CloudFront在30秒后超时请求 。 而问题是,我正在做的计算不能分解成多个API命中。 那么社区的任何人都可以帮助我,或者可以告诉我一些替代scheme,让我可以打到不会超时的请求。