Create and manage
Every provider takes astorage_prefix and storage_provider, plus
provider-specific credential options. Credential options take a
Secret reference, never a value directly — either a
bare name (resolved in the caller’s own database, root namespace) or a
SecretReference qualified with a database and namespace path:
The Python column names the methods landing in a future release (see the
draft note above); use SQL today. There is no TypeScript or REST
equivalent yet either.
There is no
ALTER. To rotate a credential, rotate the
Secret it references — the integration’s
reference does not change, so nothing that reads through it needs updating.
The S3 trust workflow
An S3 integration created withSTORAGE_AWS_ROLE_ARN (instead of a static
access key pair) needs one more step outside LanceDB: DESCRIBE returns
trust_policy and permissions_policy, the IAM policy documents your role
needs, built from aws_account_id, aws_iam_principal_arn and
aws_external_id in the same row. Attach trust_policy as the role’s
trust relationship and permissions_policy as its permissions, then check
access_verified on a later DESCRIBE to confirm LanceDB can assume the
role and read the prefix.
Privileges
A storage integration is its own object in the authorization model, a namespace child like a Secret:CREATE_STORAGE_INTEGRATION on the
namespace to create one, USAGE on the integration for a query to read
through it, OWNERSHIP for full control including dropping it. See
Privileges for the privilege each operation
requires and the full GRANT/REVOKE syntax.
Troubleshooting
A query does not use the integration you expected: integrations match by the most specificSTORAGE_PREFIX covering the URI, not by name, and
are scoped to native databases under the catalog root. Two integrations
with equally specific prefixes make the query fail rather than guess; keep
prefixes for the same bucket or dataset family unambiguous.
403 or access-denied reading a matching prefix: confirm USAGE on the
integration, and for an S3 role integration, confirm access_verified is
true on DESCRIBE — false usually means the trust policy from
above is missing or misconfigured on the AWS side, not a LanceDB
permission problem.
DROP refuses with a dependent database: detach the database that
still uses the integration first, then drop it.
What to read next
Storage Integration
The complete SQL reference: every provider’s options, output columns, and GRANT syntax.
Inspect Datasets
The most common use of a storage integration today: inspecting and importing HuggingFace datasets.
Secret
The credential a storage integration’s
_SECRET options reference.