code: protected Operation snapshotTable(String snapshotName, TableName tableName)
        throws IOException {
  
      SnapshotTableRequest.Builder requestBuilder = SnapshotTableRequest.newBuilder()
          .setCluster(getSnapshotClusterName().toString())
          .setSnapshotId(snapshotName)
          .setName(options.getInstanceName().toTableNameStr(tableName.getNameAsString()));
  
      int ttlSecs = configuration.getInt(BigtableOptionsFactory.BIGTABLE_SNAPSHOT_DEFAULT_TTL_SECS_KEY, -1);
      if (ttlSecs > 0) {
        requestBuilder.setTtl(
            Duration.newBuilder().setSeconds(ttlSecs).build()
        );
      }
  
      ApiFuture<Operation> future = tableAdminClientWrapper
          .snapshotTableAsync(requestBuilder.build());
  
      return Futures.getChecked(future, IOException.class);
    }
docs: Creates a snapshot from an existing table.  NOTE: Cloud Bigtable has a cleanup policy
  
  @param snapshotName a {@link String} object.
  @param tableName a {@link TableName} object.
  @return a {@link Operation} object.
  @throws IOException if any.