Tag: 亚马逊 s3

在Meteor中不能使用aws-sdk

出于某种原因,我似乎无法让AWS SDK在Meteor 0.7.0.1中工作。 如果我使用npm安装,我得到以下内容: While building the application: node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/test.html:1: Can't set DOCTYPE here. (Meteor sets <!DOCTYPE html> for you) node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/LICENSE-W3C.html:1: Can't set DOCTYPE here. (Meteor sets <!DOCTYPE html> for you) node_modules/aws-sdk/dist/console.html:1: Can't set DOCTYPE here. (Meteor sets <!DOCTYPE html> for you) node_modules/aws-sdk/dist/s3upload.html:1: Can't set DOCTYPE here. (Meteor sets <!DOCTYPE html> for you) node_modules/aws-sdk/dist/tests.html:1: Can't set […]

如何使用nodejs请求模块复制curl命令?

我怎样才能复制这个curl请求: $ curl "https://s3-external-1.amazonaws.com/herokusources/…" \ -X PUT -H 'Content-Type:' –data-binary @temp/archive.tar.gz 用节点请求模块? 我需要这样做来在AWS S3上放置一个文件,并匹配来自Heroku的源端点API输出的put_url中的Heroku提供的签名。 我已经尝试过( source是Heroku源端点API输出): // PUT tarball function(source, cb){ putUrl = source.source_blob.put_url; urlObj = url.parse(putUrl); var options = { headers: {}, method : 'PUT', url : urlObj } fs.createReadStream('temp/archive.tar.gz') .pipe(request( options, function(err, incoming, response){ if (err){ cb(err); } else { cb(null, source); } […]

压缩和调整用户上传的图像的大小

我正在build立一个网站,有很多用户上传的图像(如airbnb假设) 到现在为止,该网站会上传你提交给亚马逊S3的任何图像,然后相应显示。 有时这些图像太重,并增加页面加载时间。 我想调整这个图像到需要的分辨率,并尽可能压缩(转换为JPEG),以加快加载时间,减lessstream量。 我发现这可以通过以下方式来完成: 创build一个HTMLcanvas,在浏览器中进行相关的转换,然后上传。 将图像上传到服务器,然后运行一些后端任务以减小尺寸和压缩。 每种方法有哪些好处? 这是最常见的? 我应该在每种情况下考虑什么? 我的堆栈目前是node.js / angular。 由于项目处于开发阶段,我现在不打算使用CDN 提前致谢!

Node.js脚本工作一次,然后失败

我需要一个Node.js脚本,它执行以下操作: 1 – 将图像添加到指定的S3存储桶时触发。 2 – 创build该图像的缩略图(360×203像素)。 3 – 将该缩略图的副本保存在单独的S3文件夹内。 4 – 使用“FILENAME-X”命名约定,将缩略图上传到指定的FTP服务器,六(6)次。 代码的工作起初和预期一样。 示例事件拉取图像。 创build一个thumnail。 保存到另一个S3存储桶。 然后将其上传到FTP服务器。 问题:一次对testing文件HappyFace.jpg有效,但后续testing失败。 另外,我试着用不同的文件做,但不成功。 另外:如果我可以得到一些帮助编写一个循环来命名上传的不同文件,将非常感激。 我通常使用PHP编写代码,所以它可能比我希望写的更长。 注:我删除了我的FTP凭据隐私。 问题代码片段: function upload(contentType, data, next) { // Upload test file to FTP server c.append(data, 'testing.jpg', function(err) { console.log("CONNECTION SUCCESS!"); if (err) throw err; c.end(); }); // Connect to ftp c.connect({ host: "", […]

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将上传的文件直接传输到S3,而不需要等待两个时间

您好,我正在开发REST API的移动应用程序,其中用户上传图像到应用程序服务器,然后服务器上传图像到亚马逊S3和更新数据库。 问题: 1.User wants to upload 10MB file It takes 10 seconds to travel from user's device to my server 2.After server has received last bit, it starts uploading to S3. Another 10 seconds. 3.After 20 seconds in total, user is presented with hyperlink. 我觉得这20秒可以减less一半,减less到12个左右。 如果Nodejs足够聪明,可以在最后一位到达后开始上传到S3,但是在用户到达第一位之后 – 不要等待所有file upload,而是开始stream式传输。 这可能吗?

aws-sdk获取文件信息

我正在尝试使用aws-sdk节点模块从我的Amazon S3 server上的文件获取文件信息。 我想要得到的是文件名,文件types和大小。 我已经尝试了下面的方法,但没有运气: s3.headObject(params, function (err, data) { if (err) { console.log(err, err.stack) } else { d.resolve(data); } }); 和 s3.getObject(params, function (err, data) { if (err) { console.log(err, err.stack) } else { d.resolve(data); } }); 通过他们的文档看,我似乎无法find任何其他方法,会给我我需要的信息。 所以我的问题是如何获得上述信息?

AWS s3文件以express的方式上传:上传与分段上传有什么区别?

我试图上传一个文件到AWS s3使用expressionjs,而不是putObject我使用upload http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property函数 var options ={ partSize: 5242880, queueSize: 1 }; console.time('Uploadtime'); s3.upload(params,options,function(err, data) { if (err) console.log(err, err.stack); // an error occurred else { console.timeEnd('Uploadtime'); console.log("uploaded",data); res.json({ 'status':'Uploaded' }); } // successful response }); 我觉得上传和分段上传做同样的事情(我是否正确??)我的问题是我需要使用多部分上传或留在upload方法。 从文档我无法得到上传和multipartupload之间的相似之处

将PDF从Amazon S3中拉出并从缓冲区/stream中直接在浏览器中呈现

我有一个要求,即PDF不保存在本地服务器上,而是私自存储在Amazon S3存储桶中。 但是,根据具体的请求,我需要检索PDF并直接在用户的浏览器中显示,而无需在Web服务器上下载。 我能够很好地在node.js中获取stream,并使用PDF数据进行响应。 当我检查Chrome开发工具中的响应数据时,它看起来像PDF数据,我甚至可以阅读文档中的文本。 let params = {Bucket: process.env.S3STORAGE, Key: req.query.fileName}; res.attachment(req.query.fileName); s3.getObject(params).createReadStream().pipe(res); 我已经尝试了多种方法来正确渲染它。 它要么显示一个空白的PDF,要么显示gook的PDF数据。 我正在使用vue2模板,并试图在引导模式下popupPDF。 在这个尝试中,我得到一个空白的PDF: <object :data="pdfStream" type="application/pdf" width="800px" :height="browserHeight"></object> this.pdfStream = response.bodyText; 我看到一些答案,说base64编码,但仍然没有得到这个工作。 // server side let params = {Bucket: process.env.S3STORAGE, Key: req.query.fileName}; s3.getObject(params).createReadStream().pipe(strs('binary', 'base64')).pipe(res); 然后 //client side let objbuilder = ''; objbuilder += ('<object width="100%" height="100%" data="data:application/pdf;base64,'); objbuilder += (response.bodyText); […]

S3的替代scheme,允许上传stream文件没有缓冲

是否有更好的在线存储服务比亚马逊的S3,这需要分段上传和整个文件被缓冲到我的服务器上传到他们之前。 我想要一些服务,我可以直接上传到它(通过我的服务器)没有任何缓冲