AWS S3标签,用特定前缀自动复制?

问题描述 投票:1回答:1

我有两个S3 buckets设置为 跨区域复制. 每当源桶中有一个带有特定前缀的上传,我就需要将相应的数据复制到不同区域的 "处理桶 "中。然而,在复制过程之后,我至少需要知道一些关于原始源桶的信息,因为我想设置多个桶,包括用同一个目标桶进行复制,而处理是通过lambda事件来完成的。我想过用标记来让这个工作,但我找不到办法在复制之前(或之后)自动标记包含特定前缀的上传数据。

我能找到的唯一接近这个主题的东西是 https:/docs.aws.amazon.comAmazonS3latestdevbatch-ops-put-object-tagging.html。但我不能做太多,因为我不确定,如果这是我要找的东西,特别是关于自动复制功能。

总结一下。我想通过lambda事件来处理数据 通过事件中包含的信息来区分数据的来源 json 数据(例如源于S3文件上的特定标签)。

最好的方法是什么?

amazon-web-services amazon-s3 aws-lambda replication tagging
1个回答
3
投票

标记对象

标记对象 取决于它们是如何被上传到S3的。如果你使用的是CLI。在您用 aws s3 cp 你可以调用s3api命令来添加标签。

[aws s3api put-object-tagging --bucket \[bucket name\] --key \[object key\] --tagging 'TagSet=\[{Key=mykey,Value=myvalue},{Key=yourkey,Value=yourvalue}\]'][2]

或者你也可以添加一个 兰姆达触发器 当上传时,将标签添加到对象中。您可以使用概述的例子来完成这个任务 此处.

Bucket Replication:

对象是按原样复制的,你可以设置加密,类型或存储或所有权。目前你不能改变其他的东西。

AWS文档中的 复制 将目标配置定义为。

{
  "AccessControlTranslation" : AccessControlTranslation,
  "Account" : String,
  "Bucket" : String,
  "EncryptionConfiguration" : EncryptionConfiguration,
  "StorageClass" : String
}

目前只能设置目的地StorageClass、Bucket、Account和Configuration.Bucket只是Bucket名称,不包括前缀。

如果正确的 权限 都设置了复制可以复制标签,标签可以随时添加.即你可以添加一个对象,它可以复制,然后你可以更新源标签,该源标签将复制。

注意:如果你更新了目标对象的标签,而源标签更新后,源标签将覆盖目标标签。这取决于定义的IAM策略,即如果所有权发生了变化,那么你可能无法更新标签。

AWS S3没有文件夹的概念,前缀只是键名的一部分,因此整个键名都会被复制。

可能的解决方案。

在源桶中,你可以设置一个前缀,例如 "my-source",然后在复制到目标桶时,过滤前缀 "my-source"。S3复制将把对象复制到目标桶,前缀为'my-source'。因此,如果bucket1的前缀是'my-source1object',bucket2的前缀是'my-source2object'。那么目标桶将显示 "文件夹"'my-source1'和'my-source2'以及它们的对象。但如果两个源桶的前缀相同,那么文件将出现在目标桶的同一个 "文件夹 "中。

或者你可以使用Lambda来改变前缀,或者添加上面定义的标签。

© www.soinside.com 2019 - 2024. All rights reserved.