Articles of amazon web services

使用续集ORM连接到node.js上的Amazon RDS Postgres数据库的问题

我目前正在将在Heroku中设置的环境迁移到Amazon Web服务堆栈(RDS PostgreSQL,Elastic Beanstalk)。 尝试通过sequelize.js ORM连接到PostgreSQL时,我遇到了一些问题。 错误信息如下: 未处理的拒绝SequelizeHostNotFoundError:getaddrinfo ENOTFOUND [host]。 我可以通过pgAdmin连接到数据库,所以我知道服务正在工作,并且以下configuration在Heroku上工作: sequelize = new Sequelize(process.env.DATABASE_URI, { dialect: 'postgres', protocol: 'postgres', logging: true, timestamps: false }) DATABASE_URI格式如下: postgres://[db_username]:[db_password]@[hostname]:[port]/[db_name] 任何帮助将不胜感激。 提前致谢!

通过HTTP确认SNS订阅时出现AuthorizationError

我正在写一个简单的SNS客户端,意在自订一个SNS主题,然后监听通知。 我可以成功提交sns.subscribe请求,但是当我从AWS获取SubscriptionConfirmation POST消息并尝试使用sns.confirmSubscription响应sns.confirmSubscription我得到一个AuthorizationError : [AuthorizationError: User: arn:aws:iam::xxx:user/mv-user is not authorized to perform: SNS:ConfirmSubscription on resource: arn:aws:sns:us-east-1:xxx:*] 如果我在服务器的GET查询中使用完全相同的Token和TopicArn,订阅确认工作正常,没有身份validation。 任何想法,为什么它不工作? 我的SNS主题是广泛开放的发布/订阅权限设置为“每个人”。 作为参考,我的代码是这样的: var params = { TopicArn: topicArn, // eg arn:aws:sns:us-east-1:xxx:yyy Token: token // long token extracted from POST body }; sns.confirmSubscription(params, function (err, data) { if (err) { // BOOOM – keep getting here with AuthorizationError […]

什么是当前节点到AWS的生产部署的最佳实践

我正在评估nodejs的一小部分我们的Web应用程序,它似乎是一个很好的select。 我知道这个节点年轻,行进得很快,但似乎终于到了“准备生产”的阶段。 然而,在网上search时,我在生产部署中看到的大部分信息已经过去了一年,并且仍然警告节点如何变得脆弱,并且可能意外出错,然后再重新启动一些解决scheme。 这本身并没有吓倒我,但似乎没有正确的方法来把节点可靠地放在那里。

处理/阻止潜在的恶意请求(AWS,Node.js)

我有一个运行在aws上的服务器,它负责平衡运行node.js服务器的一些ec2实例。 安全组被设置为只有LB可以在HTTP端口上击中它们。 我正在拖拽一些日志文件,并看到一堆(每次50个左右,看起来有点周期性)请求/manager/html – AFAIK这看起来像试图揭露我的应用程序中的漏洞或获得访问数据库某种经理。 我的问题是: 我是被定位的还是这些随机爬虫? 这是一个甚至还没有推出的服务,所以它是绝对晦涩的。 关于这项服务有一些新闻,所以一个人知道我们的域名是可行的,但是这个子域名并没有公布。 有没有共同的惯例不允许这些types的请求打我的实例? 最好是,我可以在我的LB中configuration某种频率或黑名单,而不会有这些types的请求碰到一个实例。 不知道如何检测恶意vs正常stream量。 我应该在我的ec2实例上运行本地代理来避免这种types的事情? 是否有任何现有的node.js解决scheme可以拒绝在应用程序级别的请求? 这是一个坏主意吗? 奖励:如果我要logging这些请求的来源,那么这些信息是否有用? 我应该尝试去stream氓,追捕起源,并发送一些伤害他们的方式? 如果是单一来源的,我应该使用机器杀死原始IP吗? (我意识到这很愚蠢,但可能会启发一些有趣的答案)。 目前这些要求并不影响我,他们得到401或404,而且对其他客户几乎没有影响。 但是,如果这是规模上升,我有什么select?

使用节点js中的AWS sdk将整个目录树上传到S3

我目前上传单个对象到S3使用像这样: var options = { Bucket: bucket, Key: s3Path, Body: body, ACL: s3FilePermissions }; S3.putObject(options, function (err, data) { //console.log(data); }); 但是,当我有一个大的资源文件夹,例如,我使用AWS CLI工具。 我想知道,是否有一种本地的方式来做同样的事情与aws sdk(上传整个文件夹到S3)?

AWS EB Node.JSlogin到CloudWatch

是否有任何可能的解决scheme将在Elastic Beanstalk上运行的应用程序的Node.JS日志stream式传输到Amazon CloudWatch? 我没有看到cwl-webrequest-metrics.config文件,但是没有关于格式的信息,我无法格式化它以将Node.JS日志(仅)传送到CloudWatch。 那你提前发表你的意见!

Printf语句不能在lambda上工作

我试图用node.js创build一个lambda函数 w用C代码编写代码,并使用node-gyp将其转换为节点库。 lambda函数完美的工作。 但是它仅打印node.js console.log语句。 这是我的node.js代码 'use strict'; console.log('Loading function'); exports.handler = (event, context, callback) => { var addon = require('./build/Release/testLibraryfromCcode'); addon.sayHello(); console.log("Completed"); } 这是我的C代码 int sayHello() { printf("Haaaaaaaaaaaaai\n"); fflush(stdout); return 0; } 我从lambdatesting控制台得到这样的输出 TART RequestId: 3e8cd5ff-2d41-11e6-af8f-ada8f1249113 Version: $LATEST 2016-06-08T06:21:32.779Z 3e8cd5ff-2d41-11e6-af8f-ada8f1249113 Loading function 2016-06-08T06:21:32.779Z 3e8cd5ff-2d41-11e6-af8f-ada8f1249113 Completed Haaaaai打印缺失。 我需要在我的C代码中打印printf语句。 如果有任何想法?

从另一个lambdaasynchronous调用aws lambda

我需要从另一个lambdaasynchronous调用aws lambda。 我有一个同步调用的工作代码。 exports.handler = (event, context, callback) => { var aws = require('aws-sdk'); var lambda = new aws.Lambda({ region: 'myregion' //change to your region }); console.log("lambda invoke started"); lambda.invoke({ FunctionName: 'testLambda', Payload: JSON.stringify(event, null, 2) // pass params }, function (error, data) { if (error) { console.log("error"); callback(null, 'hello world'); } else { console.log("lambda […]

在AWS上从PHP上Ping一个Node.js服务器

我有一个很长的程序,我已经写在node.js,但我想我的应用程序控制的PHP端踢它。 我的节点是这样的: var http = require('http'); http.createServer(function (req, res) { console.log('Got request') try{ doProcedure() } catch(e) { console.log('Really bad error while trying to do the procedure:') console.error(e.stack ? e.stack : e) } }).listen(8124, "127.0.0.1"); 当我在本地机器上运行这个时, http:// localhost:8124会正确触发事情。 在aws上,我添加了8124端口,但请求mydomain.com:8124不被节点拾取。 我试着停止httpd,然后让节点侦听端口80,排除端口不正确转发,但它仍然没有看到任何东西。 所以我猜想有两个问题: 如何让节点监听守护进程,所以我可以通过请求? (“更新用户x”,“更新用户y”,“更新所有用户”等) 如何从php中ping这个守护进程来在AWS环境中启动这些过程? 奖金的问题:有没有更好的办法,我应该这样做? 谢谢大家, 〜乔丹

AWS Lambda函数中spawn child_process的SIGSEGV

我试图在AWS Lambda函数中产生一个同步subprocess(用于运行ffprobe),但它几乎立即(200毫秒)通过SIGSEGV信号死亡。 我对分段错误的理解是,它是一个尝试访问不允许访问的内存的进程。 我试图增加内存到1024MB(我使用128MB,因为每个执行只使用约56MB),但这并没有改变任何东西。 我知道我不是唯一有此问题的人: https : //forums.aws.amazon.com/thread.jspa?threadID=229397 任何人都知道如何解决此问题? 更新25/4/2016 为了清楚起见,我正在运行的代码是: import { spawnSync } from 'child_process'; exports.handler = (event, context) => { process.env.PATH = `${process.env.PATH}:${process.env.LAMBDA_TASK_ROOT}`; const ffprobe = './ffprobe'; const bucket = event.Records[0].s3.bucket.name; const key = event.Records[0].s3.object.key; console.log(`bucket: ${bucket}`); console.log(`key: ${key}`); const url = 'http://my-clip-url.com'; // An s3 presigned url. if (!url) { throw […]