There are several projects that aim to provide the functionality you ask for, you'll need to actually test them to check to what extent they fulfill your expectations.
I don't know of an established standard, but the libcloud project seems to be near to that.
It is based in python, and basically it works providing an abstraction layer to interact with the public APIs of the different service providers.
An example from their website shows how to create a node in Rackspace:
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
cls = get_driver(Provider.RACKSPACE)
driver = cls('username', 'api key', region='iad')
sizes = driver.list_sizes()
images = driver.list_images()
size = [s for s in sizes if s.id == 'performance1-1'][0]
image = [i for i in images if 'Ubuntu 12.04' in i.name][0]
node = driver.create_node(name='libcloud', size=size, image=image)
print(node)
You don't give specifics of what providers you need to interact to, but you can check this list to see if they are amongst the suppported.
You can find more info in the online documentation.
Other similar project, based in Java is jclouds.