We had something similar happen with lifecycle rules, moving an entire bucket to glacier: end result was > $200k and AWS weren’t especially helpful on our attempts to refund us.
We were unaware that changes via a rule still count as an api hit per object, despite all happening in the backend. I’m sure we can’t be the only people hit by this.