code: @Override
      public Snapshot createSnapshot(CreateSnapshotRequest request) {
          request = beforeClientExecution(request);
          return executeCreateSnapshot(request);
      }
docs: <p>
  Creates a copy of an entire cluster or replication group at a specific moment in time.
  </p>
  <note>
  <p>
  This operation is valid for Redis only.
  </p>
  </note>
  
  @param createSnapshotRequest
  Represents the input of a <code>CreateSnapshot</code> operation.
  @return Result of the CreateSnapshot operation returned by the service.
  @throws SnapshotAlreadyExistsException
  You already have a snapshot with the given name.
  @throws CacheClusterNotFoundException
  The requested cluster ID does not refer to an existing cluster.
  @throws ReplicationGroupNotFoundException
  The specified replication group does not exist.
  @throws InvalidCacheClusterStateException
  The requested cluster is not in the <code>available</code> state.
  @throws InvalidReplicationGroupStateException
  The requested replication group is not in the <code>available</code> state.
  @throws SnapshotQuotaExceededException
  The request cannot be processed because it would exceed the maximum number of snapshots.
  @throws SnapshotFeatureNotSupportedException
  You attempted one of the following operations:</p>
  <ul>
  <li>
  <p>
  Creating a snapshot of a Redis cluster running on a <code>cache.t1.micro</code> cache node.
  </p>
  </li>
  <li>
  <p>
  Creating a snapshot of a cluster that is running Memcached rather than Redis.
  </p>
  </li>
  </ul>
  <p>
  Neither of these are supported by ElastiCache.
  @throws InvalidParameterCombinationException
  Two or more incompatible parameters were specified.
  @throws InvalidParameterValueException
  The value for a parameter is invalid.
  @sample AmazonElastiCache.CreateSnapshot
  @see <a href="http://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot" target="_top">AWS API
  Documentation</a>