You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake外部表从AWS账户复制到GCP账户的实现方案咨询

跨云外部表配置方案

以下两种方案可实现需求,可根据你的合规要求选择:

方案1:GCP侧Snowflake直接创建指向AWS S3的外部表(推荐)

该方案无需复制数据,GCP侧查询的是AWS S3的原始文件,和AWS侧外部表数据实时一致,操作成本最低。
操作步骤:

  • 第一步:AWS侧配置S3跨云访问权限
    在AWS IAM中创建专属访问角色,给角色配置S3桶的s3:GetObject、s3:ListBucket权限,同时预留Snowflake IAM实体的信任关系配置位。
  • 第二步:GCP侧Snowflake创建AWS S3存储集成
    执行以下SQL创建存储集成,替换括号内的实际参数:
    CREATE STORAGE INTEGRATION aws_s3_cross_cloud_integ
    TYPE = EXTERNAL_STAGE
    STORAGE_PROVIDER = 'S3'
    STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::<AWS账号ID>:role/<你创建的跨云访问角色名>'
    ENABLED = TRUE
    STORAGE_ALLOWED_LOCATIONS = ('s3://<你的S3桶名>/<外部表对应的路径前缀>/');
    
    执行完成后运行DESC STORAGE INTEGRATION aws_s3_cross_cloud_integ;,获取输出中的STORAGE_AWS_IAM_USER_ARN参数值,将该ARN填入第一步AWS角色的信任关系中,完成权限打通。
  • 第三步:创建外部阶段和外部表
    先创建指向S3路径的外部阶段,复用上面的存储集成:
    CREATE STAGE aws_s3_ext_stage
    URL = 's3://<你的S3桶名>/<外部表对应的路径前缀>/'
    STORAGE_INTEGRATION = aws_s3_cross_cloud_integ
    FILE_FORMAT = (TYPE = <实际文件格式,比如PARQUET/CSV/JSON>);
    
    最后参照AWS侧的外部表字段定义、分区规则、文件过滤逻辑,在GCP侧创建完全一致的外部表即可,查询时会直接读取S3中的对应文件,和AWS侧数据完全同步。

方案2:复制AWS侧外部表元数据到GCP侧

如果需要复用AWS侧的外部表配置,不需要手动重写建表语句,可以用该方案:

  • 首先在AWS侧Snowflake账户创建私有共享,将外部表所属的数据库/模式、关联的存储集成、文件格式等对象加入共享,授权给你的GCP区域Snowflake账户ID。
  • 在GCP侧Snowflake账户挂载该共享,直接执行以下SQL复制外部表元数据:
    CREATE EXTERNAL TABLE gcp_ext_table COPY OF <共享数据库名>.<模式名>.<AWS侧外部表名>;
    

注意:该方案仍然需要GCP侧Snowflake有权限访问AWS S3才能正常查询数据,如果有合规要求不允许跨云访问对象存储,你需要先将S3中的文件同步到GCS,再在GCP侧创建指向GCS的外部表。

注意事项
  • 如果AWS侧的外部表结构有变更,方案1需要同步修改GCP侧的外部表定义,方案2可以开启元数据自动刷新同步变更。
  • 同一个存储集成可以给同一路径下的所有外部表复用,不需要重复创建。

内容的提问来源于stack exchange,提问作者Sandeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:42:01