Snowflake reading from the Glue Data Catalog
Two Snowflake objects make the lakehouse work. Catalog Integration points Snowflake at the Glue Data Catalog so it can read metadata. External Volume points Snowflake at the S3 prefix so it can read data files. Both are backed by an IAM role that Snowflake assumes when it reads.
The Snowflake-AWS handshake
CREATE OR REPLACE CATALOG INTEGRATION glueCatalog_WarehouseWeatherData
CATALOG_SOURCE = GLUE
CATALOG_NAMESPACE = 'warehouse_weather_data'
TABLE_FORMAT = ICEBERG
GLUE_AWS_ROLE_ARN = 'arn:aws:iam::xxxxxxxxxxxx:role/snowflake_service_role'
GLUE_CATALOG_ID = 'xxxxxxxxxxxx'
GLUE_REGION = 'us-east-1'
ENABLED = TRUE
REFRESH_INTERVAL_SECONDS = 600;Catalog Integration with the Glue source. The role ARN is the bridge: Snowflake assumes it when reading.
CREATE OR REPLACE EXTERNAL VOLUME warehouse_weather_data_vol
STORAGE_LOCATIONS =
(
(
NAME = 's3_warehouse_weather_data.db'
STORAGE_PROVIDER= 'S3'
STORAGE_BASE_URL = 's3://learnwithparam-aws-lakehouse/pipeline-weather-data/warehouse/warehouse_weather_data.db/'
STORAGE_AWS_ROLE_ARN='arn:aws:iam::xxxxxxxxxxxx:role/snowflake_service_role'
)
)
ALLOW_WRITES=FALSE;External Volume points Snowflake at the S3 path where the Iceberg data files live. Same role assumption pattern.
Notice ALLOW_WRITES=FALSE. Snowflake reads, never writes. Glue is the writer. Keeping that boundary explicit prevents an accidental Snowflake INSERT from corrupting the lakehouse contract.
Quiz: Quiz
Loading practice…