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.