我知道这个问题很老了,但是当我在这里结束时,其他人可能也会来这里。
我认为一个选项可能是 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);
});
}
};
};