Tag: 亚马逊 s3

Amazon S3 getObject桶策略

我有一个政策在我的桶里宣布: { "Sid": "Policy 1", "Effect": "Allow", "Principal": "*", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<bucket_name>/*", "Condition": { "StringLike": { "aws:Referer": "http://example.com/*" } } } 我声明了一个条件aws:Referer,因为我只想从某个域访问对象。 在我的节点API中,我添加了s3对象作为内部下载的附件。 this.response.attachment(Key) this.body = request(Location, { encoding: null }) 但是,它总是会产生一个“未处理的拒绝状态码错误:403” 。 该文件可以上传到S3存储桶,我可以得到该对象。 这个部分的问题是下载。 我试图删除在政策的条件和下载工作正常。 我的存储桶政策可能是什么问题?

从Node和Express后端将file upload到S3

我正在关注如何将图像file upload到S3存储桶的教程 。 但是,在指定的S3存储桶中不会显示文件。 如教程中所述,我发送一个“putobject”请求来获取“签名url”作为响应。 s3bucket.getSignedUrl('putObject', s3_params, function(err, data){ // Error… else{ var return_data = { requestUrl: data }; res.json( generalResponse( return_data )); } 然后,我将return_datavariables传递给XMLHttpRequest的一个实例来发出put请求。 xhr.open("PUT", signed_request); Express和S3中的CORSconfiguration如下所示: performance: app.use(function(req, res, next){ res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); next(); }); S3桶: <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>Authorization</AllowedHeader> </CORSRule> </CORSConfiguration> 没有语法错误或服务器错误出现在nodemanshell或控制台。 我在想,必须有一些configuration问题,阻止文件从客户端上传到S3。 […]

dynamic网站使用AWS

我想要使​​用AWS无服务器托pipe一个dynamic网站。 我打算使用Lambda,API网关,DynamoDB和S3。 我的前端页面将驻留在S3中。 拦截器是会有一些dynamic的项目,如用户名和其他元数据将是用户特定的。 我知道到目前为止,我们能做的最好的事情就是从S3中拉出html页面。 那么我如何继续并在这些页面中包含这些variables? 我将在NodeJS中编写lambda。

如果对象使用promise,则AWS签署url

我有一个用于生成签名url的代码片段。 下面的return语句总是返回空的url。 其余的数据正确解决。 当我debugging时,我看到return callback function validSignedURL首先被执行,然后function validSignedURL的resolve部分被调用。 awsHelper .s3vldSignedURL(s3Link) .then(function(signedURL) { data[1].url = signedURL; return callback(null, successResponse.getResponse(context, 'OK', data)); }); s3vldSignedURL映射到下面的函数。 这里s3.headobject是基于promise的,用来检查一个文件是否存在于s3中。 我希望这个函数是通用的,这样我就可以使用它来为任何s3object生成一个签名的url。 function validSignedURL(bucket, path) { console.log("Generating Presigned Link … "); const s3 = new aws.S3(); let params = { Bucket: bucket, Key: path }; let checkObj = s3.getObject(params); return new Promise(function(resolve, reject){ […]

在asynchronous任务完成时收到通知

我正在使用我在互联网上find的代码将多个file upload到Amazon S3服务器。 const AWS = require("aws-sdk"); // from AWS SDK const fs = require("fs"); // from node.js const path = require("path"); // from node.js // configuration const config = { s3BucketName: 'your.s3.bucket.name', folderPath: '../dist' // path relative script's location }; // initialize S3 client const s3 = new AWS.S3({ signatureVersion: 'v4' }); // resolve […]

expressjs文件下载内存泄漏

我得到了一个非常奇怪的行为ExpressJs下面的代码如果命中多个请求在第二次抛出404到客户端,看着日志,我看到的是以下内容: (节点:1460)警告:检测到可能的EventEmitter内存泄漏。 添加了11个文件监听器。 使用emitter.setMaxListeners()来增加限制 目标方法(从AWS S3存储桶下载文件并pipe理响应): exports.download = function (req, res) { var fileName = req.params.fileName; var options = { Bucket: config.s3.bucket, Key: fileName }; res.attachment(fileName); s3.getObject(options).createReadStream().on('error', function(err){ console.log(err); }).pipe(res); }

只允许服务器发布到AWS S3和不客户端应用程序 – 服务器代码和S3configuration

我正在开发一个允许用户上传图片的项目。 首先客户端将图像发送到服务器,然后服务器将其上传到amazons S3存储桶。 我只希望服务器有效的credentails有权上传到S3而不是客户端。 我的服务器正在将客户端图像上传到S3。 不过,我无法强制S3存储桶只允许使用正确的凭证从服务器上传。 如果我从服务器上删除AWS S3证书,服务器仍然能够将图像上传到S3,这不是预期的结果。 'use strict' const S3 = require('aws-sdk/clients/s3'); const uuid = require('uuid/v4'); if (process.env.NODE_ENV !== 'production') require('dotenv').config(); // Set credentials and region var s3 = new S3( { region: process.env.S3_REGION, accessKeyId: process.env.S3_ACCESSKEYID, secretAccessKey: process.env.S3_SECRETACCESSKEY }); function uploadImage(bufferImage) { return new Promise((resolve, reject) => { let key = `${uuid()}.png`; let […]

Alexa Skill FeedHelper.js – 我如何获得机箱的url?

我正在使用亚马逊的蓝图来开发Alexa饲料技能。 在这个蓝图中,RSS源从一个URL被调用并转换成JSON格式并保存在Amazon S3上。 这个文件负责做这个动作(对于标准的元素来说它是很好的) https://github.com/alexa/skill-sample-nodejs-feed/blob/master/lambda/custom/feedHelper.js 我现在也需要shell的url,因为我想播放一个播客。 我认为这将通过添加以下内容到第63行的feedHelper.js中: if (item['enclosure']) { feedItem['enclosureUrl'] = item['enclosure'].attributes['url']; } 但是S3在这个文件的帮助下生成的JSON在那里仍然没有包含元素。 我甚至把它调用正确吗? 我也试过了: if (item['enclosure']) { feedItem['enclosureUrl'] = item['enclosure'].url; } 和 if (item['enclosure']) { feedItem['enclosureUrl'] = item['enclosure']['url']; } 另一个问题是,audio链接与https://链接,亚马逊不接受HTTP …但是,当我在浏览器栏中手动将此地址与https放在前面时,下载工作正常。 所以希望我能够把这个机箱标签中的HTTP改成https,就像这里所描述的那样? http://code.dblock.org/2017/02/09/alexa-skill-to-play-your-podcast.html 所以总结上面:我需要从RSS提要这个元素 <enclosure type="audio/mpeg" url="http://feeds.soundcloud.com/stream/file.mp3" length="7087881"/> 写入使用feedHelper.js创build的JSON中 目前,尽pipe我的代码如上,但它并没有在json中生成任何机箱元素。 有没有人有一个想法? 谢谢!

为什么我的文件没有上传到S3使用Node.js

我正在使用这个https://github.com/nuxusr/Node.js—Amazon-S3上传文件到S3: 在test-s3-upload.js我大部分的testing都是这样评论的,因为他们给出了一些错误,因为我的目标是将file upload到s3,所以我只保留testUploadFileToBucket()testing,而运行node test.js给出正常。 但是当我检查s3狐狸上传的文件没有被显示。 为什么文件没有上传?

Node.js – 将canvas保存为图像

我的堆栈是在Heroku上运行的Node / Express / Mongo / Jade。 我正尝试使用writeFile将canvas保存为文件系统中的png。 app.post('/savePlaylist', ensureAuthenticated, function(req, res){ var pl = new Playlist({ name: req.body.playlistName, creatorID: req.user.oauthID, creatorName: req.user.name, description: req.body.desc, songs: [] }); var img = req.body.imgBase64; var data = img.replace(/^data:image\/\w+;base64,/, ""); var buf = new Buffer(data, 'base64'); //console.log("Buffer: " + buf); fs.writeFile('./public/img/coverpics/image-' + pl._id + '.png', buf, function(err){ if(err){ […]