Articles of amazon web services

无法连接到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', […]

扫描两个时间戳之间的查询

我正在为DynamoDB使用aws-sdk编写nodejs 5.7.1应用程序。 我有一个我用下面的代码创build的事件表: var statsTableName='bingodrive_statistics'; var eventNameColumn = 'event_name'; var eventTimeColumn = 'event_time'; var eventDataColumn = 'event_data'; var params = { TableName: statsTableName, KeySchema: [ // The type of of schema. Must start with a HASH type, with an optional second RANGE. { // Required HASH type attribute AttributeName: eventNameColumn, KeyType: 'HASH', }, { // […]

DynamoDB和Node Js:意外的令牌h

我试图与DynamoDB竞争Node js亚马逊入门指南。 我试图创build一个表,但这里是我的错误: Unable to create table. Error JSON: { "message": "Unexpected token h", "code": "SyntaxError", "time": "2016-05-06T16:59:50.411Z", "statusCode": 200, "retryable": false, "retryDelay": 0 我正在运行以下节点(直接从亚马逊开始指南): var AWS = require("aws-sdk"); AWS.config.loadFromPath('./.aws/credentials.json'); AWS.config.update({ region: "us-west-2", endpoint: "http://localhost:8000" }); var dynamodb = new AWS.DynamoDB(); var params = { TableName : "Movies", KeySchema: [ { AttributeName: "year", KeyType: "HASH"}, […]

在AWS EC2上按计划运行Node.js函数

我试图实现按计划的时间间隔在AWS EC2实例上运行Node.js代码的能力。 它与AWS Lambda的工作方式类似,但Lambda不提供我需要的资源量。 我已经有一个工作Node.js应用程序,我只需要得到它在EC2上运行(我认为)。 林新的服务器和EC2,所以我迷失在如何实现这一点。 我能够设置并运行一个EC2实例,但运行代码是另一回事。 我的想法是在EC2实例上托pipeNode.js应用程序,但在调度应用程序以在EC2中启动的时间表上运行Lambda函数。 我只是不知道从哪里开始学习如何做到这一点。 一如既往,感谢您的帮助!

AWS Lambda Invoke不执行lambda函数

我创build了4个Lambda函数来处理将写入MySQL表的信息。 前三个函数分别select插入和更新一个MYSQL表logging。 然后我创build了第四个函数来接受logging细节作为事件参数的一部分。 这个函数首先尝试通过调用第一个lambda函数来selectlogging,如果find它,将使用更新lambda函数更新表上的logging。 如果没有find它,它将调用插入函数来添加logging。 我正在使用操作MySQL表的3个函数pool.query。 我也使用lambda.invoke从第四个函数调用这三个函数。 我能够通过传递logging细节作为参数成功地在本地testing第四个函数,并且能够成功调用三个Lambda函数并更新mySQL表logging。 我遇到的问题是,当我在AWS Lambda中上传函数时,它不会调用这三个函数中的任何一个。 我没有看到日志中的任何错误,所以我不知道如何检查问题出在哪里。 以下是调用其他函数的y代码: exports.handler = (event, context, callback) => { var err = null; var payload = { qryString : event.qryString, record: event.updaterecord, dbConfigPool : event.dbConfigPool } var params = { FunctionName: 'getInventory', Payload: JSON.stringify(payload) } console.log(' before invoke ' + JSON.stringify(params) ) lambda.invoke(params, function(err, data) […]

在主程序之前在lambda中加载S3文件

我正在写一个lambda函数,需要加载一个存储在S3中的密钥。 它不会经常改变,所以我宁愿不要每次调用lambda函数都抓住它,所以我想在容器被启动时加载一次,然后在lambda容器的生命周期中保存该值。 但是,由于asynchronous方法getObject,这导致了一个问题,因为在运行main module.export代码时(特别是如果这是第一次运行并且正在创build容器),文件可能未被加载。 我已经使用setTimeout实现了一个解决方法,但是我想看看这个推荐的方法是什么,而且我的方法有什么问题,因为它感觉不对! 示例代码: var AWS = require('aws-sdk') var s3 = new AWS.S3(); var fileLoaded = false; var params = { Bucket: 'bucket-name', Key: 'file-name' }; s3.getObject(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else { console.log('File loaded from S3'); fileLoaded = true; } }); exports.handler = (event, context, […]