code: @Override
      public Snapshot createClusterSnapshot(CreateClusterSnapshotRequest request) {
          request = beforeClientExecution(request);
          return executeCreateClusterSnapshot(request);
      }
docs: <p>
  Creates a manual snapshot of the specified cluster. The cluster must be in the <code>available</code> state.
  </p>
  <p>
  For more information about working with snapshots, go to <a
  href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html">Amazon Redshift Snapshots</a>
  in the <i>Amazon Redshift Cluster Management Guide</i>.
  </p>
  
  @param createClusterSnapshotRequest
  @return Result of the CreateClusterSnapshot operation returned by the service.
  @throws ClusterSnapshotAlreadyExistsException
  The value specified as a snapshot identifier is already used by an existing snapshot.
  @throws InvalidClusterStateException
  The specified cluster is not in the <code>available</code> state.
  @throws ClusterNotFoundException
  The <code>ClusterIdentifier</code> parameter does not refer to an existing cluster.
  @throws ClusterSnapshotQuotaExceededException
  The request would result in the user exceeding the allowed number of cluster snapshots.
  @throws TagLimitExceededException
  You have exceeded the number of tags allowed.
  @throws InvalidTagException
  The tag is invalid.
  @throws InvalidRetentionPeriodException
  The retention period specified is either in the past or is not a valid value.</p>
  <p>
  The value must be either -1 or an integer between 1 and 3,653.
  @sample AmazonRedshift.CreateClusterSnapshot
  @see <a href="http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/CreateClusterSnapshot" target="_top">AWS
  API Documentation</a>