Configure an external volume for S3-compatible storage

For externally managed or Snowflake-managed Apache Iceberg™ tables with data and metadata in S3-compatible storage, you can configure an external volume associated with an Amazon S3-compatible storage location.

Prerequisites

To use S3-compatible storage for Iceberg tables, you must have an S3-compatible API endpoint for Snowflake. For more information, see Requirements for S3-compatible storage.

Create an external volume for S3-compatible storage

Create an external volume that specifies an S3-compatible storage location. For information about the S3-compatible parameters in the CREATE EXTERNAL VOLUME command, see the command syntax.

CREATE OR REPLACE EXTERNAL VOLUME ext_vol_s3_compat
  STORAGE_LOCATIONS = (
    (
      NAME = 'my_s3_compat_storage_location'
      STORAGE_PROVIDER = 'S3COMPAT'
      STORAGE_BASE_URL = 's3compat://mybucket/unload/mys3compatdata'
      CREDENTIALS = (
        AWS_KEY_ID = '1a2b3c...'
        AWS_SECRET_KEY = '4x5y6z...'
      )
      STORAGE_ENDPOINT = 'mystorage.com'
    )
  );
Copy

Update your external volume credentials

To change or update the credentials for the external volume, you can use the ALTER EXTERNAL VOLUME … UPDATE command. Specify the name of the storage location that you want to change the credentials for.

ALTER EXTERNAL VOLUME ext_vol_s3_compat UPDATE
  STORAGE_LOCATION = 'my_s3_compat_storage_location'
  CREDENTIALS = (
    AWS_KEY_ID = '4d5e6f...'
    AWS_SECRET_KEY = '7g8h9i...'
  );
Copy