相关疑难解决方法(0)

使用lambda函数解压缩S3中的档案真的很懒散

我的公司正在将大型存档文件上传到S3,现在希望它们在S3上解压缩.我写了一个基于解压缩的lambda函数,由一个文件到达xxx-zip存储桶触发,它从S3流式传输zip文件,解压缩流,然后将各个文件流式传输到xxx-data存储桶.

它可以工作,但我发现它比我预期的要慢得多 - 即使在测试文件,zip大小约为500k并且保存大约500个文件,这是超时设置60秒的超时.这看起来是对的吗?在使用节点运行的本地系统上,它比这更快.在我看来,由于文件正在亚马逊的云中移动,因此延迟应该很短,并且由于文件正在流式传输,因此实际花费的时间应该是解压缩流所花费的时间.

有没有一个固有的原因,为什么这不起作用,或者我的代码中有什么东西导致它这么慢?这是我第一次使用node.js,所以我可能会做得很糟糕.或者,有没有更好的方法来做到谷歌找不到的?

这是代码的大纲(BufferStream是我编写的一个类,它将返回的Buffer包装s3.getObject()成一个readStream)

var aws = require('aws-sdk');
var s3 = new aws.S3({apiVersion: '2006-03-01'});
var unzip = require('unzip');
var stream = require('stream');
var util = require( "util" );
var fs = require('fs');

exports.handler = function(event, context) {
    var zipfile = event.Records[0].s3.object.key;
    s3.getObject({Bucket:SOURCE_BUCKET, Key:zipfile}, 
    function(err, data) {
        var errors = 0;
        var total = 0;
        var successful = 0;
        var active = 0;
        if (err) {
            console.log('error: ' + err);
        }
        else { …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services node.js aws-lambda

6
推荐指数
1
解决办法
1万
查看次数

使用字节的AWS Rekognition JavaScript SDK

AWS Rekognition的Javascript API规定,对于 rekognition.compareFaces(params,...)法,SourceImageTargetImage可以采取BytesS3Object.我想用Bytes哪个可以

"字节 - (缓冲区,类型数组,Blob,字符串)"

图像字节的Blob最多5 MB.

当我传递Base64图像的编码字符串时,JS SDK再次重新编码(即双重编码).因此服务器响应错误说

{"__ type":"InvalidImageFormatException","消息":"无效的图像编码"}

有没有人设法使用base64编码图像(而不是)使用compareFaces JS SDK APIS3Object?或使用Bytesparam的任何JavaScript示例都会有所帮助.

javascript sdk base64 amazon-web-services amazon-rekognition

5
推荐指数
1
解决办法
2885
查看次数