微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Lambda 将文件从一个文件夹移动到同一 AWS S3 存储桶中的另一个文件夹?

如何解决如何使用 Lambda 将文件从一个文件夹移动到同一 AWS S3 存储桶中的另一个文件夹?

我正在尝试在 S3 存储桶中的文件创建事件中自动文件一个文件夹移动到同一 S3 存储桶中的另一个文件夹。

我希望使用 Lambda 函数的触发器来执行此操作,但我觉得,Lambda 在根目录级别触发,无法在文件夹级别使用。

示例:

Bucket Name: my-only-s3-bucket 
Source Folder: s3://my-only-s3-bucket/Landing 
Target Folder: s3://my-only-s3-bucket/Staging

要求:

文件被创建或上传到源文件夹:s3://my-only-s3-bucket/Landing 时,它应该会自动移动到 s3://my-only-s3-bucket/Staging,无需任何人工干预

如何实现这一目标?

解决方法

我希望使用 Lambda 函数的触发器来执行此操作,但我觉得,Lambda 在根目录级别触发,无法在文件夹级别使用。

这不是真的。 S3 没有文件夹的概念。您可以使用过滤器前缀,即 prefix -> "Landing/" 和/或后缀(例如“.jpg”)在任何“级别”触发。

S3 触发器将调用 lambda 并将新对象作为输入传递事件。然后只需使用您熟悉的任何语言,并使用任何可用的 AWS SDK(.Net、Java、python 等)中的内置函数复制到目标。

示例:

def object_copied?(
  s3_client,source_bucket_name,source_key,target_bucket_name,target_key)

  return true if s3_client.copy_object(
    bucket: target_bucket_name,copy_source: source_bucket_name + '/' + source_key,key: target_key
  )
rescue StandardError => e
  puts "Error while copying object: #{e.message}"
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。