Tag: amazon s3

我可以在没有nodejs服务器的情况下在客户端使用webpack吗?

我试图build立一个Web应用程序,我想在亚马逊S3上存储所有的HTML,JS和CSS文件,并通过API与一个宁静的服务器通信。 我试图实现延迟加载,也许路由与反应路由器。 看来,webpack有这个function代码分裂,将延迟加载类似的工作。 但是,我发现的所有教程和示例都涉及webpack-dev-server,它是一个小型节点快速服务器。 无论如何,我可以在构build时生成包,并将所有东西上传到亚马逊S3,并实现类似于Angular的ocLazyLoading?

如何在客户端将可查看file upload到Amazon S3?

让我开始说,我通常很不愿意发表这个问题,因为我总觉得互联网上的所有东西都有答案。 花了无数小时寻找这个问题的答案后,我终于放弃了这个声明。 假设 这工作: s3.getSignedUrl('putObject', params); 我想做什么? 使用getSignedUrl方法通过PUT(从客户端)将file upload到Amazon S3 允许任何人查看上传到S3的文件 注意:如果有更简单的方法允许客户端(iPhone)通过预先签名的URL上传到Amazon S3(并且不需要公开证书客户端) 主要问题* 查看AWSpipe理控制台时,上传的文件具有空白的权限和元数据集。 查看上传的文件时(例如,通过双击AWSpipe理控制台中的文件),我得到一个AccessDenied错误。 我试过了什么? 尝试#1:我的原始代码 在NodeJS中,我生成一个预先签名的URL,如下所示: var params = {Bucket: mybucket, Key: "test.jpg", Expires: 600}; s3.getSignedUrl('putObject', params, function (err, url){ console.log(url); // this is the pre-signed URL }); 预先签名的URL看起来像这样: https://mybucket.s3.amazonaws.com/test.jpg?AWSAccessKeyId=AABFBIAWAEAUKAYGAFAA&Expires=1391069292&Signature=u%2BrqUtt3t6BfKHAlbXcZcTJIOWQ%3D 现在我通过PUT上传文件 curl -v -T myimage.jpg https://mybucket.s3.amazonaws.com/test.jpg?AWSAccessKeyId=AABFBIAWAEAUKAYGAFAA&Expires=1391069292&Signature=u%2BrqUtt3t6BfKHAlbXcZcTJIOWQ%3D 问题 我得到上面列出的*主要问题 尝试#2:在PUT上添加内容types和ACL 我也尝试在代码中添加Content-Type和x-amz-acl,像这样replace参数: var params […]

使用Express从S3stream文件,包括长度和文件types的信息

使用aws-sdk模块和Express 4.13,可以通过多种方式从S3中代理一个文件。 这个callback版本将返回文件正文作为缓冲区,加上其他相关的标题,如Content-Length : function(req,res){ var s3 = new AWS.S3(); s3.getObject({Bucket: myBucket, Key: myFile},function(err,data){ if (err) { return res.status(500).send("Error!"); } // Headers res.set("Content-Length",data.ContentLength) .set("Content-Type",data.ContentType); res.send(data.Body); // data.Body is a buffer }); } 这个版本的问题是你必须在发送之前得到整个文件,这并不是很好,特别是如果它像video一样大。 这个版本将直接传输文件: function(req,res){ var s3 = new AWS.S3(); s3.getObject({Bucket: myBucket, Key: myFile}) .createReadStream() .pipe(res); } 但不像第一个,它不会做任何关于头文件,浏览器可能需要正确处理文件。 有没有办法获得两个世界的最好的,从S3传递正确的标题,但发送文件作为stream? 这可以通过首先向S3发送HEAD请求来获取元数据,但是可以通过一个API调用完成吗?

如何使用AWS SDK for Node.js将Amazon S3中的所有对象从一个前缀复制/移动到另一个前缀

如何将所有对象从一个前缀复制到另一个前缀? 我已经尝试了所有可能的方法将一个镜头中的所有对象从一个前缀复制到另一个镜头,但似乎工作的唯一方法是循环一个对象列表并逐一复制它们。 这实在是效率低下。 如果我有一个文件夹中的数百个文件,我将不得不打100个电话? var params = { Bucket: bucket, CopySource: bucket+'/'+oldDirName+'/filename.txt', Key: newDirName+'/filename.txt', }; s3.copyObject(params, function(err, data) { if (err) { callback.apply(this, [{ type: "error", message: "Error while renaming Directory", data: err }]); } else { callback.apply(this, [{ type: "success", message: "Directory renamed successfully", data: data }]); } });

节点JS AWS S3file upload。 如何获得公共URL响应

我正在使用Node SDK将file upload到Amazon S3。 file upload工作正常,但我想获得该文件的公共url发回给客户端。 目前我得到的答复是: Successfully uploaded data { ETag: '"957cd1a335adf5b4000a5101ec1f52bf"' } 这是我的代码。 我正在使用一个Node Express服务器,Multer来处理上传。 app.use(multer({ // https://github.com/expressjs/multer dest: './public/uploads/', limits : { fileSize:100000 }, rename: function (fieldname, filename) { var time = new Date().getTime(); return filename.replace(/\W+/g, '-').toLowerCase() + time; }, onFileUploadData: function (file, data, req, res) { // file : { fieldname, […]

Nodejs AWS SDK S3生成预留的URL

我正在使用NodeJS AWS SDK来生成一个预先设定的S3 URL。 该文档给出了一个生成预定url的例子 。 这是我的确切代码(省略敏感信息): const AWS = require('aws-sdk') const s3 = new AWS.S3() AWS.config.update({accessKeyId: 'id-omitted', secretAccessKey: 'key-omitted'}) // Tried with and without this. Since s3 is not region-specific, I don't // think it should be necessary. // AWS.config.update({region: 'us-west-2'}) const myBucket = 'bucket-name' const myKey = 'file-name.pdf' const signedUrlExpireSeconds = 60 * […]

你如何写入aws lambda实例的文件系统?

我尝试写入aws lambda实例的文件系统失败。 文档说 ,一个标准的lambda实例在/tmp/有512mb的可用空间。 但是,在本地机器上运行的以下代码在lambda实例上完全不起作用: var fs = require('fs'); fs.writeFile("/tmp/test.txt", "testing", function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); 匿名callback函数中的代码永远不会在lambda实例上调用。 任何人都有这样的成功吗? 非常感谢你的帮助。 这可能是一个相关的问题 。 s3代码和我想用fscallback函数做什么之间有可能发生冲突吗? 下面的代码是目前正在运行的。 console.log('Loading function'); var aws = require('aws-sdk'); var s3 = new aws.S3({ apiVersion: '2006-03-01' }); var fs = require('fs'); exports.handler = function(event, context) { //console.log('Received event:', […]

pipestream到s3.upload()

我目前正在使用名为s3-upload-stream的node.js插件将非常大的文件传输到Amazon S3。 它使用多部分API,大部分它工作得很好。 但是,这个模块正在显示其年龄,我已经不得不对其进行修改(作者也不赞同)。 今天我遇到了亚马逊的另一个问题,我真的想采取作者的build议,并开始使用官方aws-sdk来完成我的上传。 但。 官方的SDK似乎不支持pipe道到s3.upload() 。 s3.upload的本质是你必须将可读stream作为parameter passing给S3构造函数。 我有大约120多个用户代码模块进行各种文件处理,他们不知道他们输出的最终目的地。 引擎递给他们一个可移动的可写入输出stream,然后他们将其传送给它。 我不能给他们一个AWS.S3对象,并要求他们调用upload()而不向所有模块添加代码。 我使用s3-upload-stream的原因是因为它支持pipe道。 有没有办法使aws-sdk s3.upload()东西,我可以pipestream的?

Amazon S3 POST API以及使用NodeJS签署策略

我试图build立一个允许用户从NodeJS支持的网站直接上传文件到我的Amazon S3存储桶的内置程序。 这里似乎只有教程,除了实际的亚马逊文件,这是非常过时的。 我一直在关注这个教程 ,获取基本的信息,但是它又是过时的。 它没有方法调用crypto正确,因为它试图传递一个原始的JavaScript对象的update方法,由于它不是一个string或缓冲区抛出一个错误。 我也一直在看knox npm包的源代码。 它没有内置的POST支持 – 我完全理解,因为它是浏览器一旦拥有正确的字段就进行POST。 诺克斯似乎有正确的代码来签署一个政策,我试图让我的代码基于这个工作…但再次无济于事。 这是我为了代码而想出来的。 它产生一个base64编码策略,它创build一个签名…但是当我尝试做一个file upload的时候,它是根据Amazon的错误签名。 var crypto = require("crypto"); var config = require("../../amazonConfig.json"); exports.createS3Policy = function(callback) { var date = new Date(); var s3Policy = { "expiration": "2014-12-01T12:00:00.000Z", "conditions": [ {"acl": "public-read"}, ["content-length-range", 0, 2147483648], {"bucket": "signalleaf"}, ["starts-with", "$Cache-Control", ""], ["starts-with", "$Content-Type", ""], ["starts-with", "$Content-Disposition", […]

如何使用node.js,Express和knox从浏览器上传文件到Amazon S3?

我试图find一些利用node.js,Express和knox的示例代码。 Knox的文档只给出了如何上传已存储在文件系统中的文件的清晰示例。 https://github.com/learnboost/knox#readme 此外,还有一些简单的教程(即使是在Express中),也可以直接上传文件来保存到文件系统。 我遇到的麻烦是一个例子,它允许您将客户端上传到节点服务器,并将数据直接传输到S3,而不是先存储在本地文件系统中。 有人可以指出我的一个要点或其他包含这种信息的例子吗?