def create_snapshot(options = {})
      resp = @client.create_snapshot(options)
      Snapshot.new(
        id: resp.data.snapshot_id,
        data: resp.data,
        client: @client
      )
    end
def create_snapshot(options = {})
      resp = @client.create_snapshot(options)
      Snapshot.new(
        id: resp.data.snapshot_id,
        data: resp.data,
        client: @client
      )
    end
@example Request syntax with placeholder values

   snapshot = ec2.create_snapshot({
     description: "String",
     volume_id: "String", # required
     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",
           },
         ],
       },
     ],
     dry_run: false,
   })
 @param [Hash] options ({})
 @option options [String] :description
   A description for the snapshot.
 @option options [required, String] :volume_id
   The ID of the EBS volume.
 @option options [Array<Types::TagSpecification>] :tag_specifications
   The tags to apply to the snapshot during creation.
 @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`.
 @return [Snapshot]