用于具有特定前缀的自动复制的 Amazon S3 标签?
Amazon S3 tags for automatic replication with specific prefix?
我为跨区域复制设置了两个 Amazon S3 存储桶。每当源存储桶中有具有特定前缀的上传时,我需要将相应的数据复制到我在不同区域的“处理存储桶”。但是,我至少需要知道复制过程后有关原始源存储桶的一些信息,因为我想设置多个存储桶,包括使用同一目标存储桶进行复制,而处理将通过 lambda 事件完成。
我想过让它与标记一起使用,但我找不到在复制之前(或之后?)自动标记包含特定前缀的上传数据的方法。
我能找到的唯一接近这个主题的是 https://docs.aws.amazon.com/AmazonS3/latest/dev/batch-ops-put-object-tagging.html,但我无法充分利用它,因为我不确定这是否是我要搜索的内容,特别是关于自动复制功能。
回顾一下:我想通过 lambda 事件处理数据,并通过事件的 json 数据(源自 S3 上的特定标签)中包含的信息来区分它们的来源例如文件)。
解决这个问题的最佳方法是什么?
标记对象
Tagging objects 取决于将它们上传到 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]
或者您可以添加 Lambda Trigger that adds the tags to the object when uploaded. You can do this using the examples outlined here。
桶复制:
对象按原样复制,您可以设置加密、类型或存储或所有权。目前您无法更改任何其他内容。
replication 的 AWS 文档将目标配置定义为:
{
"AccessControlTranslation" : AccessControlTranslation,
"Account" : String,
"Bucket" : String,
"EncryptionConfiguration" : EncryptionConfiguration,
"StorageClass" : String
}
目前只能设置目标StorageClass、Bucket、Account和Configuration。
桶只是桶名,不包含前缀。
如果设置正确permissions复制可以复制标签,标签可以随时添加。即你可以添加一个对象,它可以复制,然后你可以更新源标签,源标签将复制。
注意:如果您更新目标对象标签,并且源更新源将覆盖目标标签。这取决于定义的 IAM 策略。即,如果所有权已更改,那么您可能无法更新标签。
AWS S3没有文件夹的概念,前缀只是键名的一部分,所以整个键名被复制。
可能的解决方案:
在源桶中,您可以设置一个前缀,例如 'my-source',然后复制到前缀为 'my-source' 的目标桶过滤器。 S3 复制会将对象复制到前缀为 'my-source' 的目标存储桶。因此,如果存储桶 1 的前缀为 'my-source1/object',而存储桶 2 的前缀为 'my-source2/object'。然后目标桶将显示 "folders" 'my-source1' 和 'my-source2' 及其尊敬的对象。但是,如果两个源存储桶具有相同的前缀,那么文件将出现在目标上的相同 "folder" 中。
或者,您可以使用 Lambda 更改前缀,或添加上面定义的标签。
我为跨区域复制设置了两个 Amazon S3 存储桶。每当源存储桶中有具有特定前缀的上传时,我需要将相应的数据复制到我在不同区域的“处理存储桶”。但是,我至少需要知道复制过程后有关原始源存储桶的一些信息,因为我想设置多个存储桶,包括使用同一目标存储桶进行复制,而处理将通过 lambda 事件完成。
我想过让它与标记一起使用,但我找不到在复制之前(或之后?)自动标记包含特定前缀的上传数据的方法。
我能找到的唯一接近这个主题的是 https://docs.aws.amazon.com/AmazonS3/latest/dev/batch-ops-put-object-tagging.html,但我无法充分利用它,因为我不确定这是否是我要搜索的内容,特别是关于自动复制功能。
回顾一下:我想通过 lambda 事件处理数据,并通过事件的 json 数据(源自 S3 上的特定标签)中包含的信息来区分它们的来源例如文件)。
解决这个问题的最佳方法是什么?
标记对象
Tagging objects 取决于将它们上传到 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]
或者您可以添加 Lambda Trigger that adds the tags to the object when uploaded. You can do this using the examples outlined here。
桶复制:
对象按原样复制,您可以设置加密、类型或存储或所有权。目前您无法更改任何其他内容。
replication 的 AWS 文档将目标配置定义为:
{
"AccessControlTranslation" : AccessControlTranslation,
"Account" : String,
"Bucket" : String,
"EncryptionConfiguration" : EncryptionConfiguration,
"StorageClass" : String
}
目前只能设置目标StorageClass、Bucket、Account和Configuration。 桶只是桶名,不包含前缀。
如果设置正确permissions复制可以复制标签,标签可以随时添加。即你可以添加一个对象,它可以复制,然后你可以更新源标签,源标签将复制。
注意:如果您更新目标对象标签,并且源更新源将覆盖目标标签。这取决于定义的 IAM 策略。即,如果所有权已更改,那么您可能无法更新标签。
AWS S3没有文件夹的概念,前缀只是键名的一部分,所以整个键名被复制。
可能的解决方案:
在源桶中,您可以设置一个前缀,例如 'my-source',然后复制到前缀为 'my-source' 的目标桶过滤器。 S3 复制会将对象复制到前缀为 'my-source' 的目标存储桶。因此,如果存储桶 1 的前缀为 'my-source1/object',而存储桶 2 的前缀为 'my-source2/object'。然后目标桶将显示 "folders" 'my-source1' 和 'my-source2' 及其尊敬的对象。但是,如果两个源存储桶具有相同的前缀,那么文件将出现在目标上的相同 "folder" 中。
或者,您可以使用 Lambda 更改前缀,或添加上面定义的标签。