AWS S3 Replication: V1 vs V2 and multiple destinations

Adding a second S3 replication - had one in Asia for latency, added Oregon for backup.

Wrote a new replication rule with filter {} like in the examples. Left the old rule without it - why? The field is empty, no parameters there. Saved a few lines and characters.

api error InvalidRequest: Number of distinct destination bucket ARNs cannot exceed 1

Turns out:

S3 replication has two config versions. V1 - no filter (only “prefix” - the only allowed filter there). V2 - with filter, even an empty one. Multiple destinations are only supported in V2. And if one config has at least one V2 rule - all other rules must be V2 too.

Without filter {} AWS silently treats the rule as V1.

In the official docs <Filter> is present in examples, and it says you can fill it with <Prefix>. That its absence determines the config version - not mentioned.

Good technical documentation should be unambiguous. Happens very rarely.

Fix: added filter {} to the old rule, both became V2, multiple destinations worked.