Not really… We don’t not have active “cross-cloud” solutions (except things like Kubernetes), resources are defined in terms that are specific to each cloud (S3 / Azure Storage, not “Storage”). Migration may be easier because it’s the same tool that you use, but the program is going to be different.
You can’t make circular dependencies by design. To depend B on A, you need to define A in your program before B, which is not possible.