def create_volume(options = {})
      resp = @client.create_volume(options)
      Volume.new(
        id: resp.data.volume_id,
        data: resp.data,
        client: @client
      )
    end
def create_volume(options = {})
      resp = @client.create_volume(options)
      Volume.new(
        id: resp.data.volume_id,
        data: resp.data,
        client: @client
      )
    end
@example Request syntax with placeholder values

   volume = ec2.create_volume({
     availability_zone: "String", # required
     encrypted: false,
     iops: 1,
     kms_key_id: "String",
     size: 1,
     snapshot_id: "String",
     volume_type: "standard", # accepts standard, io1, gp2, sc1, st1
     dry_run: false,
     tag_specifications: [
       {
         resource_type: "client-vpn-endpoint", # accepts client-vpn-endpoint, customer-gateway, dedicated-host, dhcp-options, elastic-ip, fleet, fpga-image, host-reservation, image, instance, internet-gateway, launch-template, natgateway, network-acl, network-interface, reserved-instances, route-table, security-group, snapshot, spot-instances-request, subnet, transit-gateway, transit-gateway-attachment, transit-gateway-route-table, volume, vpc, vpc-peering-connection, vpn-connection, vpn-gateway
         tags: [
           {
             key: "String",
             value: "String",
           },
         ],
       },
     ],
   })
 @param [Hash] options ({})
 @option options [required, String] :availability_zone
   The Availability Zone in which to create the volume. Use
   DescribeAvailabilityZones to list the Availability Zones that are
   currently available to you.
 @option options [Boolean] :encrypted
   Specifies whether the volume should be encrypted. Encrypted Amazon EBS
   volumes may only be attached to instances that support Amazon EBS
   encryption. Volumes that are created from encrypted snapshots are
   automatically encrypted. There is no way to create an encrypted volume
   from an unencrypted snapshot or vice versa. If your AMI uses encrypted
   volumes, you can only launch it on supported instance types. For more
   information, see [Amazon EBS Encryption][1] in the *Amazon Elastic
   Compute Cloud User Guide*.



   [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html
 @option options [Integer] :iops
   The number of I/O operations per second (IOPS) to provision for the
   volume, with a maximum ratio of 50 IOPS/GiB. Range is 100 to 64,000
   IOPS for volumes in most Regions. Maximum IOPS of 64,000 is guaranteed
   only on [Nitro-based instances][1]. Other instance families guarantee
   performance up to 32,000 IOPS. For more information, see [Amazon EBS
   Volume Types][2] in the *Amazon Elastic Compute Cloud User Guide*.

   This parameter is valid only for Provisioned IOPS SSD (io1) volumes.



   [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances
   [2]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html
 @option options [String] :kms_key_id
   An identifier for the AWS Key Management Service (AWS KMS) customer
   master key (CMK) to use when creating the encrypted volume. This
   parameter is only required if you want to use a non-default CMK; if
   this parameter is not specified, the default CMK for EBS is used. If a
   `KmsKeyId` is specified, the `Encrypted` flag must also be set.

   The CMK identifier may be provided in any of the following formats:

   * Key ID

   * Key alias. The alias ARN contains the `arn:aws:kms` namespace,
     followed by the region of the CMK, the AWS account ID of the CMK
     owner, the `alias` namespace, and then the CMK alias. For example,
     arn:aws:kms:*us-east-1*\:*012345678910*\:alias/*ExampleAlias*.

   * ARN using key ID. The ID ARN contains the `arn:aws:kms` namespace,
     followed by the region of the CMK, the AWS account ID of the CMK
     owner, the `key` namespace, and then the CMK ID. For example,
     arn:aws:kms:*us-east-1*\:*012345678910*\:key/*abcd1234-a123-456a-a12b-a123b4cd56ef*.

   * ARN using key alias. The alias ARN contains the `arn:aws:kms`
     namespace, followed by the region of the CMK, the AWS account ID of
     the CMK owner, the `alias` namespace, and then the CMK alias. For
     example,
     arn:aws:kms:*us-east-1*\:*012345678910*\:alias/*ExampleAlias*.

   AWS parses `KmsKeyId` asynchronously, meaning that the action you call
   may appear to complete even though you provided an invalid identifier.
   The action will eventually fail.
 @option options [Integer] :size
   The size of the volume, in GiBs.

   Constraints: 1-16,384 for `gp2`, 4-16,384 for `io1`, 500-16,384 for
   `st1`, 500-16,384 for `sc1`, and 1-1,024 for `standard`. If you
   specify a snapshot, the volume size must be equal to or larger than
   the snapshot size.

   Default: If you're creating the volume from a snapshot and don't
   specify a volume size, the default is the snapshot size.

   <note markdown="1"> At least one of Size or SnapshotId are required.

    </note>
 @option options [String] :snapshot_id
   The snapshot from which to create the volume.

   <note markdown="1"> At least one of Size or SnapshotId are required.

    </note>
 @option options [String] :volume_type
   The volume type. This can be `gp2` for General Purpose SSD, `io1` for
   Provisioned IOPS SSD, `st1` for Throughput Optimized HDD, `sc1` for
   Cold HDD, or `standard` for Magnetic volumes.

   Defaults: If no volume type is specified, the default is `standard` in
   us-east-1, eu-west-1, eu-central-1, us-west-2, us-west-1, sa-east-1,
   ap-northeast-1, ap-northeast-2, ap-southeast-1, ap-southeast-2,
   ap-south-1, us-gov-west-1, and cn-north-1. In all other Regions, EBS
   defaults to `gp2`.
 @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 [Array<Types::TagSpecification>] :tag_specifications
   The tags to apply to the volume during creation.
 @return [Volume]