Articles of amazon web services

aws s3 putObject vs sync

我需要上传一个大文件到aws s3桶。 在每10分钟我的代码从源目录中删除旧文件,并生成一个新的文件。 文件大小约500 MB。 现在我使用s3.putObject()方法创build后上传每个文件。 我也听说过aws s3同步。 它与aws-cli一起来。 它用于上传文件到S3桶。 我用sws上传node.js的aws-sdk。 aws-sdk for node.js不包含s3-sync方法。 是s3-sync比s3.putObject()方法好吗? 我需要更快的上传。

使用aws-sdk使用nodejs将图像上传到s3

我想上传图片到amazon web services器,为此,我正在使用aws-sdk和nodejs。 我能够上传图片到S3桶,但是当我点击URL来访问他们,我得到了访问被拒绝的错误。 这是我的configuration var AWS = require('aws-sdk'); //aws credentials AWS.config = new AWS.Config(); AWS.config.accessKeyId = "<access_key>"; AWS.config.secretAccessKey = "<secret_key>"; AWS.config.region = "ap-southeast-1"; AWS.config.apiVersions = { "s3": "2006-03-01" } var s3 = new AWS.S3(); var bodystream = fs.createReadStream(req.files.pic.path); var params = { 'Bucket': '<bucket_name>', 'Key': 'uploads/images/' + req.files.pic.name, 'Body': bodystream, 'ContentEncoding': 'base64', 'ContentType ': […]

AWS Lambda上的权限问题,无法产生subprocess

所以我创造了这个漂亮的小lambda,在当地运行很好,但是在野外实际上没有那么多。 lambda需要事件,在事件源中使用html,将该html转换为PDF(使用html-pdf节点模块),将该pdf传递给s3存储桶,然后将签名的URL返回,过期时间为60秒。 或者至less这是应该发生的(再次,在本地工作)。 在Lambda上进行testing时,出现以下错误: { "errorMessage": "spawn EACCES", "errorType": "Error", "stackTrace": [ "exports._errnoException (util.js:870:11)", "ChildProcess.spawn (internal/child_process.js:298:11)", "Object.exports.spawn (child_process.js:362:9)", "PDF.PdfExec [as exec] (/var/task/node_modules/html-pdf/lib/pdf.js:87:28)", "PDF.PdfToFile [as toFile] (/var/task/node_modules/html-pdf/lib/pdf.js:83:8)", "/var/task/index.js:72:43", "Promise._execute (/var/task/node_modules/bluebird/js/release/debuggability.js:272:9)", "Promise._resolveFromExecutor (/var/task/node_modules/bluebird/js/release/promise.js:473:18)", "new Promise (/var/task/node_modules/bluebird/js/release/promise.js:77:14)", "createPDF (/var/task/index.js:71:19)", "main (/var/task/index.js:50:5)" ] } 这里是代码本身(不编译,有一个方便的一口气任务) if(typeof regeneratorRuntime === 'undefined') { require("babel/polyfill") } import fs from 'fs' import pdf from […]

获取504 GATEWAY_TIMEOUT NodeJs

在页面加载60s后,我得到了504 GATEWAY_TIMEOUT http响应。 这不是一个正在加载的实际页面,而是一个正在执行的进程。 我期待它花费超过60秒,我试图增加超时值,但它没有帮助。 我使用快速框架进行路由,并在EB(AWS Elastic Beanstalk)上托pipe作业。 由于我已经增加了在AWS控制台中的EB和负载平衡器上可能find的所有超时值,因此我认为它必须是超时设置为60秒的应用程序本身。 不过,我可能是错的。 我的代码: /* GET home page. */ router.get('/main',function(req, res, next) { req.connection.setTimeout(600000); mainProcess(res); //res.send("mainProcess() called"); }); 更新: 除此之外,我尝试了不同的方法。 我将这段代码添加到app.js : var connectTimeout = require('connect-timeout'); var longTimeout = connectTimeout({ time: 600000 }); app.use(longTimeout); 也没有帮助。 UPDATE2:我也尝试增加/bin/www的超时时间,如下所示: var server = http.createServer(app); server.timeout=600000; UPDATE3:我已经注意到超时与nginxconfiguration有关。 正如我的日志说: upstream timed out (110: Connection […]

如何在ELB内部设置SSL,并与ELB外部的节点实例进行通信

我已经使用ELB之外的ELB,自动调节,RDS和一个节点ec2实例在AWS上创build了架构(希望它不应该是错误的)。 现在我没有得到,那我怎么能在这个架构上实现SSL。 让我简单解释一下: 我创build了一个经典的负载平衡器。 在自动缩放组上创build。 将实例分配给自动调整组。 最后,我创build了一个我正在使用的节点实例,这个负载平衡器和自动调整组是不在这个范围之内的。 现在,当我将SSL实现到负载均衡器时,内部实例正在与HTTP请求上的节点实例进行通信,并且由于节点实例位于负载平衡器之外,因此请求被阻止。 有人可以帮我实施这个架构的SSL。 对不起,如果你与我的架构混淆,如果有任何其他最好的架构可能,那么请让我知道我可以改变我的架构。 谢谢,

如何为node.js实现AWS Elasticache自动发现?

我是一个节点noob,并试图了解如何在node.js应用程序中实现自动发现 。 我打算使用集群模块,并希望每个工作进程保持最新(并持久地连接到)elasticache节点。 由于没有共享内存的概念(比如PHP APC),你是否需要在每个worker中运行代码,每隔X秒唤醒一次,并以某种方式更新IP列表并重新连接memcache客户端? 人们今天如何解决这个问题? 示例代码将不胜感激。

knox和AWS SDK有什么不同,对于node.js?

…据我所知,他们做同样的事情:提供访问amazon web services。 有人可以提供这两个库之间的不同function列表吗? 为什么诺克斯存在,如果亚马逊已经提供了一个提供?

什么是处理node.js私有模块依赖关系的推荐方式?

我目前正在使用部署在Elastic Beanstalk上的node.js应用程序。 它已经开始引用github上托pipe的私有模块作为私有存储库。 本地如果我把它的引用到我的package.json的依赖部分,如下所示,它工作正常。 我可以运行nom安装,它下载模块和应用程序没有问题。 "ModuleName": "git+https://TOKEN:x-oauth-basic@github.com/OWNER/REPO_NAME.git" 但是,当我尝试部署到Beanstalk失败,并出现以下错误: 2014-04-04 00:14:09,188 [DEBUG] (1630 MainThread) [commandWrapper.py-60] [root commandWrapper main] Command result: {'status': 'FAILURE', 'results': [{'status': 'FAILURE', 'config_sets': ['Infra-EmbeddedPreBuild', 'Hook-PreAppDeploy', 'Infra-EmbeddedPostBuild'], 'returncode': 1, 'events': [{'msg': 'Failed to run npm install. Snapshot logs for more details.', 'timestamp': 1396570449, 'severity': 'ERROR'}, {'msg': 'Failed to run npm install. npm http GET […]

使用lambda函数在S3中解压缩文件真的很慢

我的公司正在上传大档案文件到S3,现在想要他们在S3上解压缩。 我写了一个基于unzip的lambda函数,由文件到达xxx-zip存储区触发,它从S3stream解压缩文件,解压缩stream,然后将单个文件stream式传输到xxx数据存储区。 它可以工作,但是我发现它比我预期的要慢得多 – 即使在一个testing文件中,zip大小约为500k,并且保存了大约500个文件,但是超时设置为60秒。 这看起来正确吗? 在我的本地系统运行节点比这更快。 在我看来,由于文件被转移到亚马逊的云延迟应该是短暂的,并且由于文件正在stream,实际所花费的时间应该是解压缩stream的时间。 有没有一个固有的原因,为什么这将无法正常工作,或者有我的代码中的东西造成它如此之慢? 这是我第一次使用node.js,所以我可能会做一些不好的事情。 或者有没有更好的方法来做到这一点,我无法find谷歌? 下面是代码的概要( BufferStream是我写的一个类, s3.getObject()由s3.getObject()返回的Buffer包装到readStream ) var aws = require('aws-sdk'); var s3 = new aws.S3({apiVersion: '2006-03-01'}); var unzip = require('unzip'); var stream = require('stream'); var util = require( "util" ); var fs = require('fs'); exports.handler = function(event, context) { var zipfile = event.Records[0].s3.object.key; s3.getObject({Bucket:SOURCE_BUCKET, Key:zipfile}, function(err, […]

DynamoDB节stream

我有一个5读和5写能力dynamo表。 在这张表中,我有两个logging。 然后,我决定通过一次推送大量的写入(一次突发中的大约4000条logging)来查看我会得到什么样的错误响应。 蓝色“消耗”线直接射过红色“容量”线,但是我没有得到任何types的错误信息。 指标显示节stream发生,但我仍然发生读取,如果我超过两个容量水平,我的写道仍然发生。 我已经花了超过30分钟的时间推动阅读和写入远高于容量,没有任何错误。 我不确定这是因为我在节点js中使用官方javascript SDK,可能透明地处理调节并重试受限制的查询? 我希望有人能给我一些指导。 谢谢