2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式!
背景:Snowflake 与多云环境
数据在阿里云,日志在腾讯云,而你却想用 Snowflake 做全局建模?这不再是“既要又要”的幻想。随着企业数据上云的持续深入,不少使用云服务的企业,会把数仓原始数据、日志、媒体文件集中存放在对象存储中,同时希望利用 Snowflake 的能力做统一建模与分析。
在全球范围内,Snowflake 诞生之初便构建在多云架构(Multi-cloud)之上。目前 Snowflake 全球服务已广泛部署于 AWS、Google Cloud 和 Azure,实现了跨云、跨区域的无缝数据流动与统一治理 。在国内市场,Snowflake China 自 2024 年正式落地 AWS 宁夏区域以来,其与国际版一致的架构能力已在本土环境中得到深度验证 。Snowflake 与 21 世纪互联运营的 Azure 及 AWS 中国区域的底层互通与稳定性早已是业界公认的成熟方案。
随着企业数字化转型的深入,新的挑战随之而来:数据资产往往散落在阿里云、华为云、腾讯云及火山引擎等多个国产云平台上。如何打通 Snowflake 与国产云厂商之间的“最后一公里”,实现真正的全云架构?
我们基于近期多个跨云实战项目,打磨出一套基于 S3 兼容协议的通用模式。无需大规模搬运数据,通过 External Volume + Apache Iceberg 的强强联手,你就能在保留原位存储的同时,享受 Snowflake 极速的分析体验。Snowflake China 不仅实现了与海外版一致的 AWS、Azure 连接能力,更深入本土生态,通过 S3 兼容协议完成了与阿里云 OSS、华为云 OBS、腾讯云 COS、以及火山引擎 TOS 的全量验证。本文将分享我们如何在异构 Bucket 之上,利用 Apache Iceberg 搭建起高性能、统一治理的数据高速公路。告别数据孤岛,从这一篇开始。
总体架构:基于 S3 兼容协议的“桥接模式”
从架构视角看,无论底层是 OSS、OBS、COS 还是 TOS,Snowflake China 与国内云对象存储的集成逻辑高度一致:统一通过各云厂商提供的 S3 兼容 Endpoint 建立连接,让外部 Bucket 在 Snowflake 中以 External Stage 或 External Volume 的方式呈现。

在该模式下,典型数据流包括:
入站流(对象存储→ Snowflake):通过 COPY INTO
命令,从 External Stage 读取 OSS/OBS/COS/TOS 中的文件,加载到 Snowflake 表中;
出站流(Snowflake → 对象存储):通过 COPY INTO
命令,将 Snowflake 表数据导出为文件写回对象存储,用于归档、共享或下游消费。 实施流程
无论是接入阿里云、华为云、腾讯云还是火山引擎,整体实施可以抽象为以下三个步骤:
步骤 1:准备对象存储环境
在对应云厂商控制台中完成:
创建 Bucket
选择合适的 Region(如杭州、北京等);
根据业务场景选择存储类型(标准存储、低频存储等);
建议权限设置为私有,后续通过访问控制体系授权 Snowflake 使用。
创建访问凭证
生产环境中,建议为 Snowflake 集成单独创建专用用户,并基于 Bucket / 前缀粒度配置最小权限策略。
步骤 2:在 Snowflake China 侧完成 Endpoint 白名单
由于 Snowflake China 运行在隔离网络中,任何访问外部对象存储的 Endpoint 都需要先由 Snowflake Support 加入白名单。
通用流程为:
1. 登录 Snowflake China 的 Jira Support Portal(中国区支持门户)。
2. 创建 Support Case,说明希望将指定 S3 兼容 Endpoint 加入白名单。
3. 在 Case 中建议包含:
○ Snowflake 账号信息(Account Locator)。
○ 对应云厂商的 Endpoint(例如 oss-cn-hangzhou.aliyuncs.com、obs.cn-north-4.myhuaweicloud.com 等)。
○ 使用场景说明(数据湖接入、离线导入/导出等)。
○ 预计访问的 Bucket 名称与数据规模。
步骤 3:在 Snowflake 中创建 External Stage / External Volume + Iceberg
白名单生效后,即可在 Snowflake 中创建:
External Stage:用于文件级别的 COPY INTO 导入 / 导出;
External Volume + Iceberg Table:用于在对象存储上构建 Lakehouse 架构,由 Snowflake 负责 Iceberg 元数据与查询引擎,对象存储负责数据文件与元数据文件的持久化。

接下来进入四大云厂商的统一集成实战。
集成实战
配置总览
各厂商常用 Region Endpoint 速查
阿里云 OSS
华为云 OBS
腾讯云 COS
火山引擎 TOS(必须使用 S3 兼容端点)
注意:火山引擎 TOS 有两种端点——普通端点 tos-cn-{region}.volces.com 和 S3 兼容端点 tos-s3-cn-{region}.volces.com。与 Snowflake 集成必须使用 S3 兼容端点。
External Stage 创建
四家云厂商的 External Stage 创建 SQL 遵循完全相同的模板,仅 URL、Endpoint 和凭证不同:
-- 通用模板CREATE OR REPLACE STAGE {STAGE_NAME}URL = 's3compat://{bucket-name}[/{path}/]'ENDPOINT = '{s3_compatible_endpoint}'CREDENTIALS = (AWS_KEY_ID = '{your_access_key}'AWS_SECRET_KEY = '{your_secret_key}');复制代码四家实际示例:
USE DATABASE YOUR_DATABASE;USE SCHEMA YOUR_SCHEMA;-- 阿里云 OSS(杭州)CREATE OR REPLACE STAGE ALIYUN_OSS_STAGEURL = 's3compat://snowflake-oss-test/data/'ENDPOINT = 'oss-cn-hangzhou.aliyuncs.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_ACCESS_KEY_ID'AWS_SECRET_KEY = 'YOUR_ACCESS_KEY_SECRET');-- 华为云 OBS(北京四)CREATE OR REPLACE STAGE HUAWEI_OBS_STAGEURL = 's3compat://snowflake-test-obs/'ENDPOINT = 'obs.cn-north-4.myhuaweicloud.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_ACCESS_KEY_ID'AWS_SECRET_KEY = 'YOUR_SECRET_ACCESS_KEY');-- 腾讯云 COS(北京)-- 注意:Bucket 名称必须包含 APPID 后缀CREATE OR REPLACE STAGE TENCENT_COS_STAGEURL = 's3compat://snowflake-test-cos-{APPID}/'ENDPOINT = 'cos.ap-beijing.myqcloud.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_SECRET_ID'AWS_SECRET_KEY = 'YOUR_SECRET_KEY');-- 火山引擎 TOS(北京)-- 注意:必须使用 S3 兼容端点 tos-s3-{region}.volces.comCREATE OR REPLACE STAGE VOLCENGINE_TOS_STAGEURL = 's3compat://snowflake-test-tos/'ENDPOINT = 'tos-s3-cn-beijing.volces.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_ACCESS_KEY_ID'AWS_SECRET_KEY = 'YOUR_SECRET_ACCESS_KEY');复制代码通过 LIST 命令验证每个 Stage 的连通性:
LIST @ALIYUN_OSS_STAGE;LIST @HUAWEI_OBS_STAGE;LIST @TENCENT_COS_STAGE;LIST @VOLCENGINE_TOS_STAGE;复制代码双向 COPY 示例
以下 COPY INTO 语法对四家云完全通用,仅需替换 Stage 名称。
导出:Snowflake → 对象存储
-- 创建测试表CREATE OR REPLACE TABLE INTEGRATION_TEST (id INT,name STRING,region STRING,cloud_provider STRING,created_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP());-- 插入测试数据INSERT INTO INTEGRATION_TEST (id, name, region, cloud_provider) VALUES(1, 'Snowflake China', 'AWS Ningxia', 'Snowflake'),(2, 'Aliyun OSS', 'Hangzhou', 'Alibaba Cloud'),(3, 'Huawei OBS', 'Beijing', 'Huawei Cloud'),(4, 'Tencent COS', 'Beijing', 'Tencent Cloud'),(5, 'Volcengine TOS', 'Beijing', 'ByteDance');-- 导出到各家云存储(以阿里云 OSS 为例,替换 Stage 名即可)COPY INTO @ALIYUN_OSS_STAGE/export/FROM INTEGRATION_TESTFILE_FORMAT = (TYPE = CSVCOMPRESSION = NONEFIELD_OPTIONALLY_ENCLOSED_BY = '"')OVERWRITE = TRUEHEADER = TRUE;复制代码导入:对象存储→ Snowflake
-- 创建目标表CREATE OR REPLACE TABLE INTEGRATION_TEST_IMPORT (id INT,name STRING,region STRING,cloud_provider STRING,created_at STRING);-- 从各家云存储导入(以阿里云 OSS 为例,替换 Stage 名即可)COPY INTO INTEGRATION_TEST_IMPORTFROM @ALIYUN_OSS_STAGE/export/FILE_FORMAT = (TYPE = CSVSKIP_HEADER = 1FIELD_OPTIONALLY_ENCLOSED_BY = '"');-- 验证导入结果SELECT * FROM INTEGRATION_TEST_IMPORT;复制代码External Volume + Iceberg Lakehouse
在很多生产场景下,你可能希望数据长期保留在对象存储上,同时由 Snowflake 提供 Iceberg Catalog 与查询能力,实现开放格式与统一治理兼得。这时可以采用 External Volume + Iceberg Table 的 Lakehouse 模式。
在该模式下:
Catalog:由 Snowflake 托管 Iceberg 表的状态与元数据指针;
Metadata 文件:Iceberg 的 JSON / Avro 等元数据文件写入你自己的 Bucket;
Data 文件:Parquet 等数据文件同样写在 Bucket 中,可被 Spark / Flink 等引擎直接访问。
(1)创建 External Volume(通用模板)
CREATE OR REPLACE EXTERNAL VOLUME {VOLUME_NAME}STORAGE_LOCATIONS = ((NAME = '{location_name}'STORAGE_PROVIDER = 'S3COMPAT'STORAGE_BASE_URL = 's3compat://{bucket-name}/{path}/'STORAGE_ENDPOINT = '{s3_compatible_endpoint}'CREDENTIALS = (AWS_KEY_ID = '{your_access_key}'AWS_SECRET_KEY = '{your_secret_key}')ENCRYPTION = (TYPE = 'NONE')));复制代码(2) External Volume 示例
-- 阿里云 OSS External VolumeCREATE OR REPLACE EXTERNAL VOLUME ALIYUN_OSS_ICEBERG_VOLUMESTORAGE_LOCATIONS = ((NAME = 'aliyun_oss_hangzhou'STORAGE_PROVIDER = 'S3COMPAT'STORAGE_BASE_URL = 's3compat://my-iceberg-bucket/iceberg/'STORAGE_ENDPOINT = 'oss-cn-hangzhou.aliyuncs.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_ACCESS_KEY_ID'AWS_SECRET_KEY = 'YOUR_ACCESS_KEY_SECRET')ENCRYPTION = (TYPE = 'NONE')));-- 华为云 OBS External VolumeCREATE OR REPLACE EXTERNAL VOLUME HUAWEI_OBS_ICEBERG_VOLUMESTORAGE_LOCATIONS = ((NAME = 'huawei_obs_beijing'STORAGE_PROVIDER = 'S3COMPAT'STORAGE_BASE_URL = 's3compat://my-iceberg-bucket/iceberg/'STORAGE_ENDPOINT = 'obs.cn-north-4.myhuaweicloud.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_ACCESS_KEY_ID'AWS_SECRET_KEY = 'YOUR_SECRET_ACCESS_KEY')ENCRYPTION = (TYPE = 'NONE')));-- 腾讯云 COS External Volume-- 注意:Bucket 名称必须包含 APPID 后缀CREATE OR REPLACE EXTERNAL VOLUME TENCENT_COS_ICEBERG_VOLUMESTORAGE_LOCATIONS = ((NAME = 'tencent_cos_beijing'STORAGE_PROVIDER = 'S3COMPAT'STORAGE_BASE_URL = 's3compat://my-iceberg-bucket-{APPID}/iceberg/'STORAGE_ENDPOINT = 'cos.ap-beijing.myqcloud.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_SECRET_ID'AWS_SECRET_KEY = 'YOUR_SECRET_KEY')ENCRYPTION = (TYPE = 'NONE')));-- 火山引擎 TOS External Volume-- 注意:必须使用 S3 兼容端点CREATE OR REPLACE EXTERNAL VOLUME VOLCENGINE_TOS_ICEBERG_VOLUMESTORAGE_LOCATIONS = ((NAME = 'volcengine_tos_beijing'STORAGE_PROVIDER = 'S3COMPAT'STORAGE_BASE_URL = 's3compat://my-iceberg-bucket/iceberg/'STORAGE_ENDPOINT = 'tos-s3-cn-beijing.volces.com'CREDENTIALS = (AWS_KEY_ID = 'YOUR_ACCESS_KEY_ID'AWS_SECRET_KEY = 'YOUR_SECRET_ACCESS_KEY')ENCRYPTION = (TYPE = 'NONE')));复制代码(3)在 External Volume 上创建 Iceberg 表(通用语法)
-- 以阿里云 OSS 为例(替换 EXTERNAL_VOLUME 名即可适用其他云)CREATE OR REPLACE ICEBERG TABLE ORDERS_ICEBERG (order_id INT,customer_id INT,order_ts TIMESTAMP_NTZ,amount NUMBER)CATALOG = 'SNOWFLAKE'EXTERNAL_VOLUME = 'ALIYUN_OSS_ICEBERG_VOLUME'BASE_LOCATION = 'orders/';复制代码其中:
CATALOG = 'SNOWFLAKE':由 Snowflake 管理 Iceberg Catalog 与表状态;
EXTERNAL_VOLUME:绑定到上一步创建的 Volume(替换为对应云厂商即可);
BASE_LOCATION:指定这张表在 Bucket 内的逻辑子路径。
(4)Iceberg 表数据完整 CRUD 操作
-- INSERT
INSERT INTO ORDERS_ICEBERG VALUES
(1001, 101, '2026-02-01 10:00:00', 14999.00),
(1002, 102, '2026-02-01 11:30:00', 7999.00),
(1003, 103, '2026-02-02 09:15:00', 1999.00);
-- UPDATE
UPDATE ORDERS_ICEBERG
SET amount = 6999.00
WHERE order_id = 1002;
-- DELETE
DELETE FROM ORDERS_ICEBERG
WHERE order_id = 1003;
-- SELECT
SELECT * FROM ORDERS_ICEBERG;
各厂商特殊注意事项
实测验证汇总
以下结果基于 Snowflake China(AWS 宁夏)的实际测试:
External Stage 双向 COPY INTO 验证
Iceberg Table 全量 CRUD 验证
综合来看,无论选择哪家国内云存储,都可以同时通过 External Stage 支持批量文件导入/导出,以及通过 External Volume + Iceberg 构建开放 Lakehouse,将数据长期保留在对象存储中,同时由 Snowflake 提供统一的 SQL 分析与治理能力。
典型工作负载模式与架构选择
在多云环境下,选择何种数据组织方式更多取决于工作负载特征和数据治理需求。下面给出三类常见模式,供设计架构时参考:
模式 A:以 Snowflake 原生表为中心
典型场景:高并发面向业务的报表、大量维度建模与复杂关联分析;
建议:将云对象存储视为“数据来源”或“结果落地端”,通过 External Stage 将数据加载到 Snowflake 原生表中进行建模与计算。
模式 B:开放 Lakehouse(Iceberg on External Volume)
典型场景:需要被 Spark、Flink 等多种引擎共同访问的数据湖;或倾向于统一使用开放格式(Parquet + Iceberg 元数据)的企业;
建议:在对象存储上创建 External Volume + Iceberg 表,由 Snowflake 管理 Catalog 与查询,同时保留文件级开放性。
模式 C:简单数据交换(External Stage Only)
典型场景:批量文件归档、一次性数据导入、审计报表导出等;
建议:仅创建 External Stage,通过 COPY INTO 完成文件级读写,不必额外维护表结构与元数据。
以上三种模式可以在同一账号内灵活组合:同一云厂商下可以同时存在多种模式,不同云厂商之间也可以采用相同的模式,实现统一的数据架构与治理能力。
最佳实践总结:为什么选择以 Snowflake 为中心?
基于综合实测,Snowflake China 与国内云存储的集成表现稳健 。在构建架构时,我们推荐以 Snowflake 为“发散式中心”连接多云,主要基于以下优势:
● 极简的运维体验:无需管理复杂的 Hadoop 堆栈或 Spark 集群。通过 Snowflake,你只需编写标准 SQL 即可横跨多个国产云 Bucket 进行联邦查询或数据加载;
● 统一的治理标准:无论数据物理上位于阿里云还是腾讯云,在 Snowflake 这一层都可以应用统一的角色权限管理(RBAC)、数据脱敏和审计策略,避免了在多个云厂商控制台中重复配置安全策略的混乱;
● 架构的灵活性与前瞻性:支持 Apache Iceberg 开放格式。这意味着企业在享受 Snowflake 极速引擎的同时,数据依然以开放格式保留在自己的国产云 Bucket 中,确保了不被单一供应商锁定的战略灵活性;
● 多云环境下的“数据中枢”:Snowflake 充当了异构云环境之间的桥梁,通过统一的 S3 兼容集成模式,让企业能更专注于业务洞察,而非被底层云基础设施的差异性所困扰。
相关资源与参考文档
为方便实施,建议参考 Snowflake 线上文档及各国产云厂商的 S3 兼容性说明:
● Snowflake 官方文档:
○ Configuring an S3-Compatible Storage Service
● 国产云 S3 兼容性参考:
○ 阿里云 OSS: 使用S3 协议访问 OSS
○ 华为云 OBS: OBS S3 协议 API 参考
○ 腾讯云 COS: COS 兼容 S3 协议说明
○ 火山引擎 TOS: TOS S3 兼容端点说明
关于作者
丁煜恒,Snowflake 资深解决方案工程师。前 AWS 解决方案架构师及 Microsoft 软件工程师。拥有逾十年在全球顶级科技公司的一线技术专家经验 。深耕于云计算、大数据架构及人工智能领域,曾主导并实现了包括 Snowflake、Azure、AWS 全球客户入华架构在内的多项核心技术方案落地。凭借对多元技术生态的深刻理解,他持续助力全球 500 强企业构建高效、可扩展的数据智能体系 。他同时持有多项主流云以及数据平台的高级专业认证,致力于将前沿的云原生技术转化为企业的核心生产力。


点击链接立即报名注册:Ascent - Snowflake Platform Training - China,更多 Snowflake 精彩活动请关注专区。





