使用Cloud Functions从Google Cloud Storage将文件复制到S3

3

我的使用场景是将一个文件从Google云存储复制到S3,因此我正在尝试使用Google Cloud Function,在存储桶中触发事件后触发。

这是代码片段。

    var s3Stream = require('s3-upload-stream')(new AWS.S3());
    var gcs = require('@google-cloud/storage')();
 exports.hellogcs = function (event, callback) {
    var bucket = gcs.bucket(event.data.bucket);
    var remoteReadStream = bucket.file(file.name).createReadStream();
    var uploadStream = s3Stream.upload({
          "Bucket": 'my bucket',
          "Key": 'parition1/'+event.data.name
        });
    console.log('writing into S3 stream');
    remoteReadStream.pipe(uploadStream);
 };

在日志中我可以看到“写入S3流”,但是S3桶中没有文件。
此外,我刚刚在Google云功能中列出了我的S3桶中的文件列表, 并且列表完美无误。
只是想找出为什么这个管道不起作用以及通过谷歌函数处理的其他方法。 附注:我对node.js还很新,请纠正我是否有任何问题。
编辑:- 我注意到只有小于3mb的文件才会被复制,而大文件则不会被复制。

回调函数在哪里?这段代码是有意同步的吗? - Michael - sqlbot
这不是完整的代码,只是一个片段。如此链接中建议的那样,有一个callback()函数。https://cloud.google.com/functions/docs/writing/background - Devesh S
你解决了这个问题吗? - Cotrariello
1个回答

0

Google Cloud Functions在Spark计划中不允许对除了Google以外的主机进行出站网络调用。如果您还没有升级到高级计划,这可能是问题所在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接