# File lib/deltacloud/drivers/ec2/ec2_driver.rb, line 212
        def create_instance(credentials, image_id, opts={})
          ec2 = new_client(credentials)
          instance_options = {}
          if opts[:user_data]
            instance_options[:user_data] = Base64::decode64(opts[:user_data])
          end
          instance_options[:key_name] = opts[:keyname] if opts[:keyname]
          instance_options[:availability_zone] = opts[:realm_id] if opts[:realm_id]
          instance_options[:instance_type] = opts[:hwp_id] if opts[:hwp_id] && opts[:hwp_id].length > 0
          firewalls = opts.inject([]){|res, (k,v)| res << v if k =~ /firewalls\d+$/; res}
          instance_options[:group_ids] = firewalls unless firewalls.empty?
          if opts[:instance_count] and opts[:instance_count].length != 0
            instance_options[:min_count] = opts[:instance_count]
            instance_options[:max_count] = opts[:instance_count]
          end
          if opts[:snapshot_id] and opts[:device_name]
            instance_options[:block_device_mappings] = [{
              :snapshot_id => opts[:snapshot_id],
              :device_name => opts[:device_name]
            }]
          end
          safely do
            new_instance = convert_instance(ec2.launch_instances(image_id, instance_options).first)
            new_instance
          end
        end