The difference between a blob storage system that implements an "S3-compatible" API, and AWS S3, is that no one is mistaking the other offering for S3. Dozens of libraries that implement the S3 API as a client, and offerings that implement it in the server aren't under pressure to diverge between fake S3 and real S3, because the API is feature-complete, and doesn't change in meaningful ways. There may be monetary harm to S3 from the competitor cloning their API and competing with them on price, but there is no reputational harm to S3.
It would be revisionist to claim that there was no reputational harm done to official Java by Android's lookalike Java -- irrespective of any mismanagement by Oracle of the Java platform. How does one prevent that?