我在两个桶之间有一个S3复制规则,该规则以特定标记的存在为条件(复制=yes)。
如果我上传带有标签的文件,它会正确工作-对象立即进入PENDING复制状态,然后在一段时间后完成。
如果我上传时没有标记,然后设置标记,则不会触发复制。对象上没有复制状态。
有可能让它工作吗?
对于一些背景:这个想法是有一个lambda函数标记文件,为基于一些未来的条件/外部逻辑的复制做好准备。
我可以让它工作,如果不是标签,我在前缀上设置复制条件,然后在lambda中进行重命名,但我的文件可能任意大(认为数百gb), S3重命名实际上是复制+删除,而如此大的文件的副本可能会使lambda超时,因为执行时间限制为15分钟。
恕我直言,如果没有解决方法(无论是Lambda还是其他方法),这是不可能的。你的用例实际上在文档中特别提到了。
假设在复制配置中,您添加了一条规则到复制具有特定标记的对象子集。在这种情况下,你必须在创建时指定特定的标签键和值对象,以便Amazon S3复制该对象。如果首先创建一个对象,然后将标记添加到现有对象,Amazon S3不会这样做复制对象
我认为这种行为是基于这样一个事实,即如果你设置一个复制到一个已经有一些对象的桶,这些"old"对象不会被复制。默认情况下,只有新上传的对象才会被复制,如果您想复制现有的对象,则需要采用其他措施,如1和2。