Skip to main content

Remote inputs

Pass an HTTP(S) URL as data to avoid loading a large file into the SDK process. The URL must return the object with an unauthenticated GET; s3:// URIs are not accepted. Downloads use only the URL’s authorization; Sutro never signs caller-selected objects with service credentials. Private S3/R2 objects therefore require a caller-authorized presigned GET URL. Public objects may use an unsigned URL. Destinations must resolve only to public IPv4/IPv6 addresses. HTTP uses port 80 and HTTPS uses port 443; other ports, URL userinfo, and redirects to non-public destinations are rejected. URL fragments are ignored. HTTPS cannot redirect to HTTP. At most five redirects are followed, with no automatic retry or resume. Unicode hostnames use IDNA; spaces and Unicode in paths/queries are escaped without changing existing percent escapes in signed URLs.

Contract

  • Formats: CSV or Parquet; gzip, bzip2, XZ, ZIP (stored or deflate members), and optional zstd wrappers are supported within resource limits
  • Defaults: 64 GiB downloaded, 256 GiB expanded/decoded, 1 GiB decoded per streaming Parquet batch, and 100 million rows (tenant quotas still apply)
  • Timeouts: 10 seconds to connect, 60 seconds without read progress, and 1 hour for the full transfer
  • HTTP response encoding may be identity, gzip, or deflate; use an object-file wrapper for other compression formats
  • Oversized, inaccessible, or expired inputs fail the job with an actionable error; a failed transfer must be resubmitted with a fresh URL
  • Published Functions: columns must match Function inputs; omit column
  • Direct model IDs: set column to the input column
  • Optional id_column: preserved in every result format
  • Use job_priority=1 and stay_attached=False
Large Parquet row groups are read in small batches. For ZIP files using bzip2 or LZMA members, recompress with deflate or use a standalone .bz2/.xz wrapper. Sutro performs one full-object download and does not resume or retry a failed HTTP request. It can try another validated DNS address if connection setup fails. Use an immutable object and a URL lifetime that covers queueing plus download startup.

Sign an Amazon S3 object

Cloudflare R2 and other S3-compatible stores use the same signing flow with their S3 endpoint. Google Cloud Storage uses a native V4 signed GET URL. Treat the complete URL as a credential: do not commit or log its query string. Use a read-only signing identity, the shortest practical lifetime, and keep the source object until results are reconciled. For KMS-encrypted S3 objects, the signing identity also needs the required KMS decrypt permissions. If pickup fails, inspect the original job before generating a fresh URL and submitting a replacement.