【问题标题】:on s3 upload to a bucket, trigger s3 copy to a different bucket在 s3 上传到存储桶时,触发 s3 复制到不同的存储桶
【发布时间】:2017-04-29 01:29:45
【问题描述】:

文件上传到s3 bucket后,有什么方法可以触发将同一个文件复制到另一个目录结构不同的s3 bucket?

两个 s3 存储桶在同一个帐户下。

一种可能的解决方案是 - 我可以在上传到 s3 存储桶的客户端中触发它。但是这里的问题是有很多客户端上传原始存储桶。

我想知道 aws 是否有任何此类服务来触发此类复制。

【问题讨论】:

标签: amazon-web-services amazon-s3


【解决方案1】:

我知道这个问题很老了,但是当我在这里结束时,其他人可能也会来这里。

我认为一个选项可能是 lambda 函数(我认为在发布此问题时它不可用),您可以在其中启用某个存储桶上的触发器,以便每次将某些内容上传到该存储桶时trigger 将调用一个lamba函数并做一些事情。 在您的情况下,您可以在存储桶上设置一个触发器以监视上传,一旦调用该触发器,您的 lambda 函数应该执行诸如“获取该文件并再次上传到另一个存储桶”之类的操作。

一些 Lambda 文档:https://aws.amazon.com/pt/documentation/lambda/

还有一些带有 S3 文档的 Lambda:http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

我认为示例代码可能类似于:

const aws = require('aws-sdk');

const s3 = new aws.S3({ apiVersion: '2006-03-01' });

exports.handler = (event, context, callback) => {
    const bucket = event.Records[0].s3.bucket.name;
    const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));

    const params = {
        Bucket: bucket,
        Key: key
    };

    s3.getObject = (params) => {
      if(err){
        console.log('Error found trying to get Object from S3: ', err);
      }
      else{
        console.log('Get Object done ', data.Body);
        const param_copy = {Bucket: 'your_copy_bucket', Key: 'your_copy_key', Body: data.Body};
        s3.upload = (param_copy) => {
          if (err) console.log('Problem on uploading: ', err);

          console.log('done');
          callback(null);
        });
      }
    };
};

【讨论】:

    【解决方案2】:

    这个答案可以帮助你:Notification of new S3 objects

    总结就是,此时除了s3:ReducedRedundancyLostObject事件外,没有任何新对象的通知。官方文档在这里:http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html

    解决方案是在你的代码中实现逻辑或轮询存储桶。

    【讨论】:

      【解决方案3】:

      它不会是实时的,但延迟只有几分钟——在第一个存储桶上启用日志记录;设置一个作业来下载和解析这些日志——其中将包括 PUT 请求——并使用它来了解需要同步哪些文件。 S3 中没有内置机制可以像这样同步存储桶。

      【讨论】:

        猜你喜欢
        • 2017-04-19
        • 2017-11-23
        • 2018-06-18
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 2019-08-07
        • 2015-03-12
        • 1970-01-01
        相关资源
        最近更新 更多