This guide describes how to prepare a Snowflake Open Catalog (Polaris) for use with StreamNative Ursa as an Iceberg catalog on AWS.Documentation Index
Fetch the complete documentation index at: https://docs.streamnative.io/llms.txt
Use this file to discover all available pages before exploring further.
Important: Polaris does not support reading buckets from a different region. The StreamNative Ursa cluster, the storage bucket, and the Polaris catalog must all reside in the same AWS region.
Prerequisites
- A Snowflake standard account
- An AWS account with permissions to create S3 buckets and IAM roles
- Access to the Snowflake Open Catalog feature (request via your Snowflake account team if not yet enabled)
1. Create a Snowflake Open Catalog Account
The Snowflake Open Catalog console requires a dedicated Open Catalog account. From the standard Snowflake console, navigate to Admin -> Accounts and use the toggle to Create Snowflake Open Catalog Account.

- Cloud: AWS
- Region: the region in which your S3 bucket resides (for example,
US East (Ohio)) - Edition: any




2. Create an S3 Bucket
Create an S3 bucket in the same region as the Open Catalog account.
3. Create an IAM Policy
Navigate to AWS IAM -> Policies -> Create policy.


4. Create an IAM Role
Navigate to AWS IAM -> Roles -> Create role and configure:- Trusted entity type: AWS account
- An AWS account: This account
- Enable External ID with a unique value (you will reference this when creating the Polaris catalog)




arn:aws:iam::<account-id>:role/<role-name>).

5. Create the Polaris Catalog
In the Snowflake Open Catalog console, create a new catalog.
- External: disabled
- Storage provider: S3
- Default base location:
s3://<your-bucket>/<your-subpath>(the path from step 3) - S3 role ARN: the role ARN recorded in step 5
- External ID: the External ID configured in step 5



6. Update the IAM Role Trust Policy
Return to the AWS IAM console, open the role created in step 5, and edit the trust relationship.

Principal.AWS to the Polaris IAM user ARN recorded in step 6.

7. Create a Connection (Service Principal)
In the Open Catalog console, create a new connection that StreamNative Ursa will use to authenticate.
- Name: any name
- Create new principal role: enabled
- Principal Role Name: any name


8. Create a Catalog Role and Grant Privileges
Navigate to Catalogs -> [your catalog] -> Roles -> + Catalog Role and create a role with the following privileges:NAMESPACE_CREATENAMESPACE_LISTNAMESPACE_READ_PROPERTIESNAMESPACE_WRITE_PROPERTIESTABLE_LISTTABLE_CREATETABLE_WRITE_DATATABLE_READ_DATATABLE_READ_PROPERTIESTABLE_WRITE_PROPERTIES




Catalog Information Summary
When the steps above are complete, collect the following values for the StreamNative Ursa compaction service:| Value | Description |
|---|---|
iceberg.uri | Polaris REST endpoint (e.g., https://<account>.<region>.aws.snowflakecomputing.com/polaris/api/catalog). The format follows the URL of your Polaris console. |
iceberg.warehouse | The Polaris catalog name created in step 6 |
iceberg.credential | <client-id>:<client-secret> from step 8 |
iceberg.scope | PRINCIPAL_ROLE:ALL |