Tag: amazon s3

Node.js&Express&S3 /一些请求被卡住了

我在这个模块中使用了node.js和s3。 这是相关代码: if (data.Contents[0].Size > 42500000) { var s3newclient = new AWS.S3({ "accessKeyId": "acc-value", "secretAccessKey": "sec-value", "region": "us-east-1" }); var s3Params = { Bucket: S3_BUCKET, Key: url.substring(1, url.length) } var download = s3newclient.getObject(s3Params); response.setHeader("content-type", 'application/octet-stream;charset=utf-8'); response.setHeader("Content-Disposition", 'attachment; filename="' + fileName + '"' + "; filename*=UTF-8''" + fileName + ""); var downloadStream = download.createReadStream(); downloadStream.pipe(response); downloadStream.on('error', […]

使用NodeJS和Multer将图像上传到S3。 如何上传整个文件onFileUploadComplete

我正在使用NodeJS和Multer将file upload到S3 。 从表面上看,所有东西似乎都在工作,文件被上传了,当我login到AWS控制台时,我可以在bucket看到它们。 但是,大多数时候,当我按照文件的链接,文件被打破,文件的大小通常比原来的文件小得多。 当文件到达服务器时,如果我log ,文件大小是正确的,但是在S3上它是小得多的。 比如我刚刚上传了一个151kb的文件。 post请求正确地logging文件大小,但在S3上 ,文件说它是81kb。 客户端: uploadFile = (file) -> formData = new FormData() formData.append 'file', file xhr = new XMLHttpRequest() xhr.open "POST", "/upload-image", true # xhr.setRequestHeader("Content-Type","multipart/form-data"); console.log 'uploadFile' xhr.onerror = -> alert 'Error uploading file' xhr.onreadystatechange = -> if xhr.readyState is 4 console.log xhr.responseText xhr.send formData 服务器: app.use(multer({ // […]

S3上传发送事件在本地使用deferred.notify()而不是在服务器上

我发送一个对象s3上传,在本地我得到一个'httpUploadProgress'事件。 这会通知函数的进度调用,然后用它的进度更新logging。 它在本地工作正常,但不在服务器上。 任何想法,将不胜感激。 我已经包含了两个代码片段。 我正在使用谷歌服务器,不知道这是代码或服务器设置的问题:/ s3.uploadVideo = function (filepath, videoName, publisher_id) { var deferred = q.defer(); var body = fs.createReadStream(filepath); var s3obj = new AWS.S3({ params: { Bucket: transcodeConfig.NonTranscodedVideoBucket, Key: publisher_id + '/' + videoName } }); s3obj.upload({Body: body}). on('httpUploadProgress', function (evt) { deferred.notify(evt); return }). send(function (err, data) { if (!err) { deferred.resolve(data); […]

缓冲区通常比stream更快处理?

我已经尝试了几个Imagemagick包装库和一些S3库。 由于巨大的性能差异,我无法select最佳的概念。 我已经与节点库“gm”解决了,这是一个很好的工作和logging。 至于S3我已经尝试了亚马逊自己的AWS库以及“S3-Streams” 编辑:我刚刚发现,AWS库可以处理stream。 我想这是一个新的functions3.upload(或者我刚刚错过了?)。 无论如何,我放弃了使用s3uploadPart更复杂的S3stream 。 在我的testing案例中切换库stream后等于上传缓冲区。 我的testing用例是将一个2MB的jpg文件分割成大约30个512px的tile,并把每个tile发送到S3。 Imagemagick通过裁剪命令有一个非常快速的自动生成方块。 不幸的是,我还没有find任何节点库,可以捕获自动生成的瓷砖的多文件输出。 相反,我必须通过分别为每个图块调用crop命令来在循环中生成图块。 我会提供详细信息之前的总计时间: A :85秒(s3-streams) A :34秒(aws.s3.upload)(编辑) B :35秒(缓冲器) C :25秒(缓冲区并行) 在这种情况下,明显缓冲区比stream处理更快。 我不知道gm或s3stream是否有不好的stream的实现,或者我应该调整一些东西。 现在我要解决schemeB. C更快,但吃更多的内存。 我在低端数字海洋Ubuntu机器上运行这个。 这是我曾经试过的: A.生成瓦片并逐一stream式传输 我有一个数组准备与裁剪信息和s3Key为每个瓷砖生成 该数组与“async.eachLimit(1)”循环。 我没有成功地一次生成多个瓦片,因此限制(1)。 随着瓦片生成,它们直接stream入S3 伪代码: async.eachLimit(tiles, 1, function(tile, callback) { gm(originalFileBuffer) .crop(tile.width, tile.height, tile.x, tile.y) .stream() .pipe(s3Stream({Key: tile.key, Bucket: tile.bucket})) //using "s3-streams" package .on('finish', callback) }); […]

如何使用Node.js将文件直接上传到Amazon Cloud Front

我刚刚configuration了Amazon Cloud Front分配,并将其连接到现有的Amazon S3存储桶。 话虽如此,这个桶可容纳10GB到40GB的video文件,我想用CF来使上传过程更快(也是下载,但上传在这种情况下更重要)。 最后,我创build了一个简单的JS脚本来将文件推送到连接到CF的这个存储桶: var AWS_ACCESS_KEY_ID = "111", AWS_SECRET_ACCESS_KEY = "222", S3_BUCKET = "videos.company.com", S3_KEY = "remote_filename.mkv", fs = require('fs'), AWS = require('aws-sdk'); AWS.config.update({accessKeyId: AWS_ACCESS_KEY_ID, secretAccessKey: AWS_SECRET_ACCESS_KEY}); var startDate = new Date().toUTCString(); var fileStream = fs.createReadStream(__dirname + '/test.mkv'); fileStream.on('error', function (err) { if (err) { throw err; } }); fileStream.on('open', function () { […]

AWS上的GD字体path用于.ttf

在常规的AWS EC2实例中是否有可用的path的标准字体? 我需要提供一个.ttf文件的完整path来使用GDgraphics工具的基本function。 AWS不会让我将.ttffile upload到主应用程序文件中。 我需要使用/设置S3存储桶吗? 服务器和GD工具是否能够使用直接path到S3上托pipe的.ttf文件? 任何解决方法? 我会很高兴在这一点上任何.ttf字体文件,将工作的GD。 我不需要任何自定义字体,只是gd工具可以访问的任何字体的path: 或多或less,这里是我创build的节点模块的代码,使用处理的数据制作图像: //forum-sig.js var gd = require('nod-gd') module.exports{ createSig: function(text, name){ var sigimg = gd.createSync(360, 180); var red = sigimg.colorAllocate(255, 0, 0) var white = sigimg.collorAllocate(255,255,255); // set full path to file // example var fontPath = '/full/path/to/font.ttf'; var fontPath = './public/OpenSans-Bold.ttf' //this path works locally […]

使用Connect Multiparty,Jimp和Amazon s3fs节点模块将resize的照片上传到Amazon s3

我目前有以下代码设置从客户端发送到一个快速服务器的文件。 const data = new FormData() data.append('programPhoto', imageFromFileInput, fileName) $.ajax({ url: requestUrl, data: data, cache: false, contentType: false, processData: false, type: 'POST' }) 在服务器上,我使用Connect-Multiparty将req对象上的这个图像文件作为req.files [0] const multiParty = require('connect-multiparty'); const multiPartyMiddleware = multiParty(); app.use(multiPartyMiddleware); 我有一个帮助function,该文件并将其上传到亚马逊S3成功和伟大的工作。 它看起来像这样: const constants = require('../config/constants'); const keys = require('../config/config.js') const fs = require('fs'); const S3FS = require('s3fs'); const Jimp = […]

如何使用KMS将S3encryption到nodejs中?

我有一些问题。 我有几个lambda函数,如果我创build脚本本地化,并运行它,所有的工作,但如果我的代码工作在远程lambda我有错误:访问被拒绝 S3Service.prototype.PutFile = function (bucket, key, body, type, callback) { var s3 = new this.AWS.S3({region: awsConfig.region,"signatureVersion":"v4"}); var params = { Bucket: bucket, Key: key, Body: body, ContentType: type, ACL: 'public-read-write', ServerSideEncryption: 'aws:kms', SSEKMSKeyId: awsConfig.kmsKeyId }; s3.putObject(params, function (err, res) { if (err) { callback(new InternalServerError(err)); } else { callback(null); } }); }; S3Service.prototype.GetFile = […]

AWS nodejs microservice:在S3存储桶中的文件发生更改时迭代调用服务

我使用nodejs在lambda上创build了一个微服务,以在S3存储桶中生成我的图像的缩略图。 但是,在将新映像上传到S3存储桶后,没有被触发。 我将触发器事件types设置为创build的S3对象。 而且我还将testing事件configuration为: "eventName": "ObjectCreated:*" ,这意味着在桶中创build/更改某些文件时,应该触发testing事件并调用此lambda函数。 我也在桶侧设置了相同的通知configuration。 它在我第一次从这个例子创build这个lambda函数的时候起作用: 创build一个部署包 该function只适用于确切的文件“HappyFace.jpg”,但失败的所有其他图像。 有时我得到“拒绝访问”错误。 我使用下面的代码: // dependencies var async = require('async'); var AWS = require('aws-sdk'); var gm = require('gm') .subClass({ imageMagick: true }); // Enable ImageMagick integration. var util = require('util'); var utils = require('utils'); // constants var MAX_WIDTH = 100; var MAX_HEIGHT = 100; // get […]

Amazon S3:与服务器的套接字连接在超时期限内未读取或写入

我正在使用s3软件包将file upload到S3: https : //www.npmjs.com/package/s3 。 我写了下面的代码(基于代码示例): var s3 = require('s3'); var client = s3.createClient({ maxAsyncS3: 20, // this is the default s3RetryCount: 3, // this is the default s3RetryDelay: 1000, // this is the default multipartUploadThreshold: 20971520, // this is the default (20 MB) multipartUploadSize: 15728640, // this is the default (15 MB) s3Options: […]