标记后未触发 AWS S3 过滤复制

问题描述

我在 2 个存储桶之间有一个 S3 复制规则,该规则以特定标签的存在为条件(replicate=yes)。

如果我上传带有标签文件,它会正常工作 - 对象立即进入 PENDING 复制状态,然后在一段时间后完成。

如果我在没有标签的情况下上传然后稍后设置标签,则不会触发复制。对象上没有复制状态。

有没有可能让它发挥作用?

对于某些背景:我们的想法是让 lambda 函数标记文件准备好基于某些未来条件/外部逻辑进行复制。

如果不是标记我让复制以前缀为条件,然后在 lambda 中重命名,我可以让它工作,但我的文件可能是任意大的(想想数百 GB),而 S3 重命名实际上是一个复制+删除,而一个副本如此大的文件可能会使 lambda 超时,因为执行时间限制为 15 分钟。

解决方法

恕我直言,如果没有解决方法(无论是 Lambda 还是其他什么),这在本地是不可能的。 您的用例实际上在 docs 中特别提到。

假设在复制配置中,你添加了一条规则到 复制具有特定标签的对象子集。在这种情况下,你 必须在创建时分配特定的标签键和值 对象供 Amazon S3 复制对象。如果您首先创建一个 对象,然后将标签添加到现有对象,Amazon S3 不会 复制对象。

我认为这种行为是可以预料的,因为如果您将复制设置到已经有一些对象的存储桶,则不会复制那些“旧”对象。默认情况下仅复制新上传的对象,如果您想复制现有对象,则需要采用其他措施,例如 12