Interesting. This is why in my current job I developed our business logic to be completely self contained and agnostic to the outside world. There's a lot of needless translation that happens (DynamoDBClient -> MyCorpDynamoDbClient) but we could painlessly switch to a different provider by translating only the edge classes of our system.