# File lib/fog/aws/models/compute/server.rb, line 141
        def run_instance_options
          raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
          requires :image_id

          options = {
            'BlockDeviceMapping'          => block_device_mapping,
            'NetworkInterfaces'           => network_interfaces,
            'ClientToken'                 => client_token,
            'DisableApiTermination'       => disable_api_termination,
            'EbsOptimized'                => ebs_optimized,
            'IamInstanceProfile.Arn'      => @iam_instance_profile_arn,
            'IamInstanceProfile.Name'     => @iam_instance_profile_name,
            'InstanceInitiatedShutdownBehavior' => instance_initiated_shutdown_behavior,
            'InstanceType'                => flavor_id,
            'KernelId'                    => kernel_id,
            'KeyName'                     => key_name,
            'Monitoring.Enabled'          => monitoring,
            'Placement.AvailabilityZone'  => availability_zone,
            'Placement.GroupName'         => placement_group,
            'Placement.Tenancy'           => tenancy,
            'PrivateIpAddress'            => private_ip_address,
            'RamdiskId'                   => ramdisk_id,
            'SecurityGroup'               => groups,
            'SecurityGroupId'             => security_group_ids,
            'SubnetId'                    => subnet_id,
            'UserData'                    => user_data,
          }
          options.delete_if {|key, value| value.nil?}

          # If subnet is defined then this is a Virtual Private Cloud.
          # subnet & security group cannot co-exist. Attempting to specify
          # both subnet and groups will cause an error.  Instead please make
          # use of Security Group Ids when working in a VPC.
          if subnet_id
            options.delete('SecurityGroup')
            if associate_public_ip
              options['NetworkInterface.0.DeviceIndex'] = 0
              options['NetworkInterface.0.AssociatePublicIpAddress'] = associate_public_ip
              options['NetworkInterface.0.SubnetId'] = options['SubnetId']
              options.delete('SubnetId')
              if options['SecurityGroupId'].kind_of?(Array)
                options['SecurityGroupId'].each {|id|
                  options["NetworkInterface.0.SecurityGroupId.#{options['SecurityGroupId'].index(id)}"] = id
                }
              else
                options["NetworkInterface.0.SecurityGroupId.0"] = options['SecurityGroupId']
              end
              options.delete('SecurityGroupId')
              if private_ip_address
                options.delete('PrivateIpAddress')
                options['NetworkInterface.0.PrivateIpAddress'] = private_ip_address
              end
            end
          else
            options.delete('SubnetId')
          end
          options
        end