Tag: 亚马逊 s3

S3 putObjectcallback没有返回期望的对象

我想上传我的图片到S3后,我想获得文件的链接(或文件名也是好的)。 我上传使用下面的代码,它的工作。 s3Bucket.putObject(data, function(err, data){ if (err) { console.log(err); res.send({result:0}); } else { res.send({result:1}); console.log(data) } }); 但在callback数据中,它只有1个属性,etag。 在文档中明确指出它有其他的对象,那么如何获得上传文件的path呢?

预定的AWS S3 PUT url无法使用jquery从客户端上传

刚刚开始使用node.js aws客户端来生成一个presigned url并将其发送到浏览器供用户上传文件,但是我收到以下消息: SignatureDoesNotMatch我们计算的请求签名与您提供的签名不匹配。 检查您的密钥和签名方法。 我参考了很多链接,看起来很基本,但我似乎失败了 https://github.com/aws/aws-sdk-js/issues/251 直接浏览器使用meteor,jQuery和AWS SDK上传到S3 https://forums.aws.amazon.com/thread.jspa?messageID=556839 要么我完全傻,要么sdk真的很难使用 节点: var putParams = { Bucket: config.aws.s3UploadBucket, Key: filename, ACL: 'public-read', Expires: 120, Body: '', ContentMD5: 'false' }; s3.getSignedUrl('putObject', putParams, function (err, url) { if (!!err) { console.error(err); res.json({error: ''}); return; } res.json({ 'awsAccessKeyId': config.aws.accessKeyId, 's3bucket': config.aws.s3UploadBucket, 's3key': filename, 's3policy': s3policy.policy, 's3signature': s3policy.signature, 'url': […]

如何在没有Amazon Cognito的情况下使用AWS S3?

我正在使用Node.js REST API来authentication我的用户。 一旦他们被authentication,我让他们张贴照片与文字。 我的计划是将文本和url存储到数据库中的照片。 这样,当他们去的post的饲料,我的应用程序将查询数据库获取文本和URL的,然后使用所有的URL从S3直接获取图像。 这是做这件事的正确方法吗?如果是这样的话,如果没有使用cognito,我怎么办呢? 我试图削减成本,似乎认知将是无用的,因为我已经添加了我的APIauthentication。 这是我到目前为止的代码。 let S3BucketName = "*******" // configure authentication with Cognito let CognitoPoolID = "*************" let Region = AWSRegionType.USEast1 let credentialsProvider = AWSCognitoCredentialsProvider(regionType:Region, identityPoolId:CognitoPoolID) let configuration = AWSServiceConfiguration(region:Region, credentialsProvider:credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration let ext = "png" let imageURL = NSBundle.mainBundle().URLForResource("iimage", withExtension: ext)! let uploadRequest = AWSS3TransferManagerUploadRequest() uploadRequest.body = […]

NodeJS:使用请求和knox将远程file upload到S3

我试图devise一种方法来上传一个文件从一个URL到S3使用请求和Knox。 目前,我的代码如下所示: request(item.productImage, function(err, res, body) { if (!err && res.statusCode == 200) { fs.writeFile('/tmp/' + filename, body, 'base64', function(err, data){ if (err) { return console.log(err); } client.putFile('/tmp/' + filename, '/item/' + item._id + '/' + filename, function(err, res) { if (err) { return console.log(err); } }); }); } }); 这不起作用,因为它在停止之前下载大约652字节的4kb文件。 奇怪的是,如果我不提供fs.writeFile()的callback,它将在本地下载整个4kb。 完成这个的最好方法是什么?

允许用户将内容上传到s3

我有一个在BUCKET_REGION区域名为BUCKET的S3存储桶。 我试图让我的网站和移动应用程序的用户上传图像文件到这些桶,只要他们满足一定的限制基于Content-Type和Content-Length (即,我想只允许jpegs小于3mbs是上传)。 一旦上传,文件应公开访问。 基于对AWS文档进行的相当广泛的挖掘,我假定在我的前端应用程序中该过程应该看起来像这样: const a = await axios.post('my-api.com/get_s3_id'); const b = await axios.put(`https://{BUCKET}.amazonaws.com/{a.id}`, { // ?? headersForAuth: a.headersFromAuth, file: myFileFromSomewhere // ie HTML5 File() object }); // now can do things like <img src={`https://{BUCKET}.amazonaws.com/{a.id}`} /> // UNLESS the file is over 3mb or not an image/jpeg, in which case I want it to […]

AWS Lambda图像已损坏

我遇到了AWS Lambda问题,每隔几次上传,我的resize的图像就会被损坏。 我写了一个脚本,从S3中取出,并将其大小调整为另一个存储桶中的3种大小,主要是使用文件stream。 这里是代码: https://github.com/handonam/AWS-Resizer/blob/493ff10c317e7150d1ac040f54065083963a9c67/createThumbnails.js 您可以看到较大的512px放大文件(resize)以及原始(200px) 另一个resize为120px 我的lambda消费看起来大部分完全正常。 它设置在768mb内存和20s超时的同一地区。 这些脚本使用90 / 768mb的小图像(如500px宽)执行大约2秒,或者在更大的图像(如2000px宽)上执行14秒@ 648 / 768mb。 但即使是一个小图像,resize也会影响到我。 如果我放弃文件stream,只是写入缓冲区(就像aws示例一样 ),那么image processing将以缓冲区结束,而lambda将耗尽太多的资源。 任何指导表示赞赏!

ngCordova FileTransfer直接上传到AWS S3 WebKitFormBoundary问题

我正尝试使用ngCordova FileTransfer插件在AWS-S3上使用预先签名的url上载文件。 我成功地将file upload到AWS-S3,但文件的内容包含在内 ——WebKitFormBoundarylCFgJXqqECF1rJ2m Content-Disposition: form-data; name="file"; filename="75cae09191bd92a16c3ff05baeb88b9b.jpg" Content-Type: image/jpeg 由此导致图像文件无法打开。 我如何摆脱我的文件中的这个头。 我有一个想法,如果我把一个二进制数据,而不是forms的数据,它会摆脱这一点,因为我已经在POSTMANtesting它,但无法find任何方式来做cordova文件传输。 $cordovaFileTransfer.upload(s3SignedUrl, imagePathOnPhone, { fileKey: "file", fileName: localFileName, httpMethod: "PUT", mimeType: 'image/jpeg' }) .then(function (result) { console.log(result); }, function (error) { console.log(error); }, function (progress) { console.log(progress); }); 我的桶在法兰克福地区和API v4。 我在服务器上使用nodejs。

cordova/离子应用程序通过服务器签名的url上传base64图像到S3

我似乎无法将照片上传到S3上。 看了很多网上资源,我似乎无法find一个明确的答案。 这是我迄今为止。 我总是得到错误代码:3作为我的失败的消息。 客户端: $scope.uploadTopicPhoto = function(imageData) { var image2save = "data:image/jpeg;base64," + imageData; $http({ url: 'http://api.example.io/signS3upload', method: "GET" }).then(function (success) { var options = new FileUploadOptions(); options.fileKey = "file"; options.fileName = success.data.key options.mimeType = "image/jpeg"; options.chunkedMode = false; options.httpMethod = 'PUT'; function win(r) { console.log("Code = " + r.responseCode); } function fail(error) { […]

与JS / Node SDK的AWS S3同步

Amazon Web Services(AWS)命令行界面(CLI)具有同步命令 。 不幸的是,AWS CLI的同步方法有点麻烦。 我想使用gulp构build过程和Amazon的javascript / node SDK同步到S3。 不幸的是,SDK似乎没有同步方法 – 或者它? 将节点中的整个目录与AWS S3同步的最佳方法是什么?

Streaming-s3不能正常升级文件

我正在使用nodejs将file upload到aws服务器。 并发现文件大小不正确。 我得到2.1KB。 这是我的代码 var uploadFile = function (fileReadStream, awsHeader, cb) { //set options for the streaming module var options = { concurrentParts: 2, waitTime: 20000, retries: 2, maxPartSize: 10 * 1024 * 1024 }; //call stream function to upload the file to s3 var uploader = new streamingS3(fileReadStream, config.aws.accessKey, config.aws.secretKey, awsHeader, options); //start […]