Amazon web services 在s3上传到一个bucket时,触发s3复制到另一个bucket
一旦一个文件被上传到一个s3存储桶,有没有办法触发一个相同文件的副本到另一个具有不同目录结构的s3存储桶 这两个s3存储桶位于同一帐户下 一个可能的解决办法是: 我可以在上传到s3 bucket的客户机中触发它。但是这里的问题是有很多客户端上传原始bucketAmazon web services 在s3上传到一个bucket时,触发s3复制到另一个bucket,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,一旦一个文件被上传到一个s3存储桶,有没有办法触发一个相同文件的副本到另一个具有不同目录结构的s3存储桶 这两个s3存储桶位于同一帐户下 一个可能的解决办法是: 我可以在上传到s3 bucket的客户机中触发它。但是这里的问题是有很多客户端上传原始bucket 我想知道aws是否有触发此类副本的服务 这个答案可以帮助您: 总结是,目前除了s3:ReducedEdundanCylosObject事件外,没有新对象的通知。官方文件如下: 解决方案是在代码中实现逻辑或轮询bucket。它不会是实时的,
我想知道aws是否有触发此类副本的服务 这个答案可以帮助您: 总结是,目前除了s3:ReducedEdundanCylosObject事件外,没有新对象的通知。官方文件如下:
解决方案是在代码中实现逻辑或轮询bucket。它不会是实时的,但延迟只有几分钟——在第一个bucket上启用日志记录;设置一个作业来下载和解析这些日志(其中包括PUT请求),并使用它来了解需要同步哪些文件。S3中没有像这样的内置机制来同步存储桶。我知道这个问题已经很老了,但当我在这里结束时,其他人可能也会来这里 我认为一个选项可以是lambda函数(我认为在发布这个问题时它还不可用),您可以在某个bucket上启用触发器,这样每当有东西上传到该bucket时,该触发器就会调用lamba函数并执行某些操作。 在你的情况下,你可以在你的bucket上设置一个触发器来监视上传,一旦这个触发器被调用,你的lambda函数应该执行类似“获取该文件并再次上传到另一个bucket”的操作 一些Lambda文档: 还有一些带有S3文档的Lambda: 我认为示例代码可能类似于:
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);
});
}
};
};
Amazon为s3启动了跨地理位置复制,这在本例中可能很有用-