在S3存储桶之间移动特定文件的Python脚本

时间:2018-06-23 14:33:31

标签: python amazon-s3 automation aws-lambda amazon-glacier

因此,在使用Python进行编码时,我仍然是一个菜鸟,但是我想知道是否有人会帮助我解决问题。

我工作的客户端使用eDiscovery系统Venio。他们有一个Web,应用程序,数据库和linux服务器,它们在AWS的EC2实例上运行。

现在,当客户将文档上传到他们的服务器时,他们最终将内容重新下载到另一个驱动器,从而给自己带来了额外的工作。在其系统上提供文件时,还存在速度问题。

在Lambda中使用脚本设置了自动快照之后,我开始考虑将它们的海量文件存储在CloudFront后面的S3中可能是一种更好的方法。

有人知道是否有一种方法可以制作一个Python脚本来查找文件中的关键字(例如“ Use”,“ Discard”),然后将它们自动分成不同的存储桶吗?

任何建议将不胜感激!

更新:

这是我启动的脚本:

import boto3

# Creates S3 client
s3 = boto3.client('s3')

filename = 'file.txt'
bucket_name = 'responsive-bucket'

keyword_bucket = {
    'use': 'responsive-bucket',
    'discard': 'non-responsive-bucket',
}

基本上,我想要的是当客户端通过Web API上传文件时,会触发python脚本,该脚本会寻找响应式或非响应式的关键字。一旦识别出这些密钥,就会将这些文件推送到相应的命名存储桶中。响应文件将保留在标准s3存储桶中,无用文件将进入s3-IA存储桶。在设定的时间后,它们将进入冰川的生命周期。

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

如果您可以建立keywords => bucket names的映射,则可以使用字典。例如:

keyword_bucket = {
    'use': 'bucket_abc',
    'discard': 'bucket_xyz',
    'etc': 'bucket_whatever'
}

然后打开文件并搜索关键字。当关键字匹配时,您可以使用上面的词典找到文件应存放到的对应存储区。