Tag: 亚马逊 s3

Nodejs Amazon S3file upload

我试图创build一个表单上传我的本地文件到我的S3桶,但我有点困惑,上传逻辑应该存在的部分。 我想保持我的POST路线干净,并引用在一个单独的文件中的AWS逻辑,但我有点困惑,什么值应该用于参数级别的身体属性,以及我应该如何引用这个模块在fileAttachment行设置完成的上传URL到我的数据库属性。 任何人都可以指向正确的方向吗? 这是我的aws-s3.js文件: module.exports = function() { var path = require('path'); var async = require('async'); var fs = require('fs'); var AWS = require('aws-sdk'); var config = require(path.resolve(__dirname, '..', '..','./config/config.js')); AWS.config.region = config.region; var s3 = new AWS.S3({params: {Bucket: config.awsBucket}}); var params = {Key: config.awsAccessKeyId, Body: req.body.fileAttachment}; s3.upload(params, function(err, data){ if (err) { console.log("Error uploading […]

在哪里存储凭据?

我正在构build一个包含图像上传function的应用程序,并决定使用Aws S3作为文件存储服务。 为了将图像上传到aws s3,您需要为该服务提供具有凭据的API。 为了保证这些证书的安全,我决定将它们存储在我自己的服务器上,并且只在需要上载图像时才将它们提供给客户端。 以下是我上传图片的过程: 1)客户端从相机胶卷select图像并点击上传button 2)该应用程序向我自己的服务器发出请求,并通过图像托pipe服务的访问密钥(aws s3) 3)客户端现在可以上传图片到aws s3。 上传完成后,客户端将删除证书。 我的问题是: 1)这样做是否安全? – 有没有更好的方法来处理这个问题? 2)我应该在哪里存储凭据在我的服务器,以保持他们的安全? 我的意思是我应该将它们存储在一个文件,数据库,代码中? *我使用graphql / expressjs作为后端,并将本机作为前端进行响应。

无法获取node.js以返回有效的签名PUT URL

为了让S3 Direct客户端的PUT操作能够正常工作,我掏出了头发。 我们有一个工作在Python上的后端代码版本,没有任何问题(所以我们知道前端工作正常),我们正试图将后端端口移植到Node.JS. 我有一个端点设置,返回一个有符号的PUT URL,这里是代码: var objectKey = req.query.s3_object_name; var objectType = req.query.s3_object_type; var params = { Bucket: s3Bucket, Key: objectKey, // ContentType: objectType, //(I have tried with and without this) Expires: 60 }; s3.getSignedUrl('putObject', params, function(err, signedUrl){ if(err){ res.send(400); }else{ res.end(JSON.stringify({ signed_request: signedUrl, url: "http://"+s3Bucket+".s3.amazonaws.com/"+objectKey })); } }); 不幸的是亚马逊总是返回以下错误: SignatureDoesNotMatch – 我们计算的请求签名与您提供的签名不匹配。 检查您的密钥和签名方法。 有没有人成功地获得JavaScript […]

使用Node.js将一个base64映像从IOS上传到S3

我有以下代码,使用node.js将图像从ios设备上传到AWS S3: var buf = new Buffer(req.body.image.replace(/^data:image\/\w+;base64,/, ""),'base64') var s3bucket = new AWS.S3({params: {Bucket: 'forplay-static', Key: 'test.png'}}); s3bucket.putObject(buf, function(err, data) { if (err) { return res.send({ success: false, err: err }); } else { return res.send({ success: true }); } }); 我发布的图片是: http : //pastebin.com/kcmXJbRd 这将在err中返回以下错误: { "code": "UnexpectedParameter", "name": "UnexpectedParameter" } 上传一个base64镜像到S3的正确方法是什么?

将私钥存储在静态的Angular站点上

我有一个静态的AngularJS文件。 它部署在Amazon S3上。 我正在访问一个具有散列validation机制的API。 我必须使用私钥才能创buildURL的散列并在标题上发送。 它工作的很好,但问题是,我必须find一种方法来保护私钥远离黑客。 我想知道是否有人知道保持密钥安全的方法。 我曾想过在node.js服务器上运行我的网站。 唯一的要求是我应该能够在Amazon Web服务上部署它。 是否有意义?

无法使用node.js&angular将图像blob上传到AWS S3

我无法将我的图片上传到AWS S3 “[InvalidParameterType:Expected params.Body是一个string,Buffer,Stream,Blob或types数组对象]消息:'Expected params.Body是一个string,Buffer,Stream,Blob或types数组对象',代码: 'InvalidParameterType', 背景所以这就是我想要做的:首先,我使用Angular Image Cropper( http://andyshora.com/angular-image-cropper.html )将图像裁剪为可接受的大小。 这给出了一个base64的URI。 然后,我使用dataURItoBlob将URI转换为blob,并尝试上传到AWS S3。 代码如下所示: angular $scope.dataURItoBlob= function(dataURI) { var binary = atob(dataURI.split(',')[1]); var array = []; for(var i = 0; i < binary.length; i++) { array.push(binary.charCodeAt(i)); } return new Blob([new Uint8Array(array)], {type: 'image/png'}); } $scope.uploadPic = function() { var base64data = document.getElementById('base64').value; console.log("the data […]

如何处理KeyTooLongError Node.js(AWS)?

我试图从我的S3服务器获取一些图像,但其中一些具有非常大的URL。 我怎么能下载这些图像,即使是大的url? 码: //download the object from the bucket sourceS3.getObject(getparamsOrig, function(gerr, s3obj) { if (gerr) { //if there is problem just print to console and move on. console.log('Download issue'); console.log(gerr); return; } }); debugging: DEBUG [03314cb6] Download issue DEBUG [03314cb6] { [KeyTooLongError: Your key is too long] DEBUG [03314cb6] message: 'Your key is too long', […]

在节点S3上使用“listobjects”时可以检索元数据吗?

我可以使用“listObjects”检索基本信息,但希望获取每个对象元数据而不做另一个请求。 目前我正在使用: var bucket = new AWS.S3({ params: { Bucket: 'Bucketname', Prefix: req.body.params.objectId + '/', Delimiter: '/' } }); bucket.listObjects(function(err, data) { if (err) { console.log('Could not load objects from S3'); } else { res.json(data); } }); 这返回 CommonPrefixes: Array[0] Contents: Array[1] Delimiter: "/" IsTruncated: false Marker: "" MaxKeys: 1000 Name: "encore-storage" Prefix: "Music/Demos/song.mp3" 但是我希望获得像“ContentType”这样的元数据,而不需要对每个对象进行另一次调用。

从本地连接aws mongo数据库?

我正尝试通过configurationrobomongo连接到本地主机的aws mongodb数据库,但它响应无法连接每次。 当我检查mongodb在aws上运行时 service mongod status 那么它是显示 mongod start/running, process 20934 这是检查mongodb是否正在运行的正确方法吗? 我为MongoDB 27017和28017添加了两个安全入站端口 对于mongodb和Robomongo我提供名称aws 地址-amazon ec2地址的实例 港口27017 有谁可以告诉这个过程有什么错?

如何使用s3-streamlogger节点模块重新logging日志文件中的内容并上传到s3中?

我正在使用winston节点模块( https://www.npmjs.com/package/winston )生成日志文件和s3-streamlogger模块( https://www.npmjs.com/package/s3-streamlogger )来保存它进入s3服务器。 var s3_stream = new S3StreamLogger({ bucket: bucket, access_key_id: accessKeyId, secret_access_key: secretAccessKey, name_format: "mylog.log" }); var logger = new(winston.Logger)({ transports: [ new (winston.transports.Console)(), new (winston.transports.File)({ stream: s3_stream }) ] }); function formatArgs(args){ return [util.format.apply(util.format, Array.prototype.slice.call(args))]; } console.log = function(){ logger.info.apply(logger, formatArgs(arguments)); }; 我的问题是,每次服务器重新启动时日志文件都会更新。 我希望以前的日志应该是他们的日志文件和新的日志应附加在那。 但是这没有发生。 我尝试了很多东西,但没有为我工作。 谁能帮我?