diff --git a/salt/cloud/__init__.py b/salt/cloud/__init__.py
index <HASH>..<HASH> 100644
--- a/salt/cloud/__init__.py
+++ b/salt/cloud/__init__.py
@@ -194,7 +194,9 @@ class CloudClient(object):
         opts['show_deploy_args'] = False
         opts['script_args'] = ''
         # Update it with the passed kwargs
-        opts.update(kwargs['kwargs'])
+        if 'kwargs' in kwargs:
+            opts.update(kwargs['kwargs'])
+        opts.update(kwargs)
         return opts
 
     def low(self, fun, low):
diff --git a/salt/runners/cloud.py b/salt/runners/cloud.py
index <HASH>..<HASH> 100644
--- a/salt/runners/cloud.py
+++ b/salt/runners/cloud.py
@@ -133,6 +133,10 @@ def create(provider, names, **kwargs):
             image=ami-1624987f size='Micro Instance' ssh_username=ec2-user \
             securitygroup=default delvol_on_destroy=True
     '''
+    create_kwargs = {}
+    for kwarg in kwargs:
+        if not kwarg.startswith('__'):
+            create_kwargs[kwarg] = kwargs[kwarg]
     client = _get_client()
-    info = client.create(provider, names, **kwargs)
+    info = client.create(provider, names, **create_kwargs)
     return info
Fixing passing kwargs in cloud.create runner