def modify_attribute(options = {})
      options = options.merge(instance_id: @id)
      resp = @client.modify_instance_attribute(options)
      resp.data
    end
def modify_attribute(options = {})
      options = options.merge(instance_id: @id)
      resp = @client.modify_instance_attribute(options)
      resp.data
    end
@example Request syntax with placeholder values

   instance.modify_attribute({
     source_dest_check: {
       value: false,
     },
     attribute: "instanceType", # accepts instanceType, kernel, ramdisk, userData, disableApiTermination, instanceInitiatedShutdownBehavior, rootDeviceName, blockDeviceMapping, productCodes, sourceDestCheck, groupSet, ebsOptimized, sriovNetSupport, enaSupport
     block_device_mappings: [
       {
         device_name: "String",
         ebs: {
           delete_on_termination: false,
           volume_id: "String",
         },
         no_device: "String",
         virtual_name: "String",
       },
     ],
     disable_api_termination: {
       value: false,
     },
     dry_run: false,
     ebs_optimized: {
       value: false,
     },
     ena_support: {
       value: false,
     },
     groups: ["String"],
     instance_initiated_shutdown_behavior: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
     instance_type: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
     kernel: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
     ramdisk: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
     sriov_net_support: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
     user_data: {
       value: "data",
     },
     value: "String",
   })
 @param [Hash] options ({})
 @option options [Types::AttributeBooleanValue] :source_dest_check
   Specifies whether source/destination checking is enabled. A value of
   `true` means that checking is enabled, and `false` means that checking
   is disabled. This value must be `false` for a NAT instance to perform
   NAT.
 @option options [String] :attribute
   The name of the attribute.
 @option options [Array<Types::InstanceBlockDeviceMappingSpecification>] :block_device_mappings
   Modifies the `DeleteOnTermination` attribute for volumes that are
   currently attached. The volume must be owned by the caller. If no
   value is specified for `DeleteOnTermination`, the default is `true`
   and the volume is deleted when the instance is terminated.

   To add instance store volumes to an Amazon EBS-backed instance, you
   must add them when you launch the instance. For more information, see
   [Updating the Block Device Mapping when Launching an Instance][1] in
   the *Amazon Elastic Compute Cloud User Guide*.



   [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM
 @option options [Types::AttributeBooleanValue] :disable_api_termination
   If the value is `true`, you can't terminate the instance using the
   Amazon EC2 console, CLI, or API; otherwise, you can. You cannot use
   this parameter for Spot Instances.
 @option options [Boolean] :dry_run
   Checks whether you have the required permissions for the action,
   without actually making the request, and provides an error response.
   If you have the required permissions, the error response is
   `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
 @option options [Types::AttributeBooleanValue] :ebs_optimized
   Specifies whether the instance is optimized for Amazon EBS I/O. This
   optimization provides dedicated throughput to Amazon EBS and an
   optimized configuration stack to provide optimal EBS I/O performance.
   This optimization isn't available with all instance types. Additional
   usage charges apply when using an EBS Optimized instance.
 @option options [Types::AttributeBooleanValue] :ena_support
   Set to `true` to enable enhanced networking with ENA for the instance.

   This option is supported only for HVM instances. Specifying this
   option with a PV instance can make it unreachable.
 @option options [Array<String>] :groups
   \[EC2-VPC\] Changes the security groups of the instance. You must
   specify at least one security group, even if it's just the default
   security group for the VPC. You must specify the security group ID,
   not the security group name.
 @option options [Types::AttributeValue] :instance_initiated_shutdown_behavior
   Specifies whether an instance stops or terminates when you initiate
   shutdown from the instance (using the operating system command for
   system shutdown).
 @option options [Types::AttributeValue] :instance_type
   Changes the instance type to the specified value. For more
   information, see [Instance Types][1]. If the instance type is not
   valid, the error returned is `InvalidInstanceAttributeValue`.



   [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html
 @option options [Types::AttributeValue] :kernel
   Changes the instance's kernel to the specified value. We recommend
   that you use PV-GRUB instead of kernels and RAM disks. For more
   information, see [PV-GRUB][1].



   [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html
 @option options [Types::AttributeValue] :ramdisk
   Changes the instance's RAM disk to the specified value. We recommend
   that you use PV-GRUB instead of kernels and RAM disks. For more
   information, see [PV-GRUB][1].



   [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html
 @option options [Types::AttributeValue] :sriov_net_support
   Set to `simple` to enable enhanced networking with the Intel 82599
   Virtual Function interface for the instance.

   There is no way to disable enhanced networking with the Intel 82599
   Virtual Function interface at this time.

   This option is supported only for HVM instances. Specifying this
   option with a PV instance can make it unreachable.
 @option options [Types::BlobAttributeValue] :user_data
   Changes the instance's user data to the specified value. If you are
   using an AWS SDK or command line tool, base64-encoding is performed
   for you, and you can load the text from a file. Otherwise, you must
   provide base64-encoded text.
 @option options [String] :value
   A new value for the attribute. Use only with the `kernel`, `ramdisk`,
   `userData`, `disableApiTermination`, or
   `instanceInitiatedShutdownBehavior` attribute.
 @return [EmptyStructure]