【问题标题】:Snowflake is not able to download file from S3 without access key, while s3fs is able to download that file from S3Snowflake 无法在没有访问密钥的情况下从 S3 下载文件,而 s3fs 能够从 S3 下载该文件
【发布时间】:2021-12-18 14:58:03
【问题描述】:

我有一个指向公共文件的 S3 URL,类似于以下 URL 示例:s3://test-public/new/solution/file.csv(这不是实际链接。只是一个与我正在使用的相近的例子)

我可以在 python 脚本中使用 s3fs 模块读取文件,无需放置任何 AWS 密钥 ID 或 AWS 密钥,如下所示:

with fs.open('test-public/new/solution/file.csv'):

但是,当我尝试从 S3 到 Snowflake 阶段或从 Table 读取相同的文件时 -> Load table,Snowlake 报告缺少 AWS 密钥 ID 和 AWS 密钥,尽管这些字段是可选的

有没有一种方法可以在没有任何 AWS 凭证的情况下将公共文件从 S3 读取到雪花表中(与 s3fs 一样)?

【问题讨论】:

  • 你可以给它一个垃圾密钥/秘密,但我没有尝试过。
  • @parsifal 我已经尝试过了,它不起作用
  • 您是否尝试过创建没有这些参数的阶段,然后在 COPY 语句中引用该阶段?如果您在帖子中包含您的 COPY 命令详细信息,将会很有帮助。
  • STORAGE_INTEGRATION = integration_name 或 CREDENTIALS = ( cloud_specific_credentials ) 仅当存储位置为私有/受保护时才需要;公共存储桶/容器不需要,因此在您的情况下,如果您有公共存储桶,则可以跳过它们。

标签: amazon-web-services amazon-s3 snowflake-cloud-data-platform snowflake-schema python-s3fs


【解决方案1】:

STORAGE_INTEGRATIONCREDENTIALS 仅当存储位置是私有而不是公共存储桶时才需要。

确保您已正确定义存储桶策略。

{
    "Version": "2012-10-17",
    "Id": "Policy16361",
    "Statement": [
        {
            "Sid": "Pub Bucket Policy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::pubucket",
                "arn:aws:s3:::pubucket/*"
            ]
        }
    ]
}

为 S3 存储桶定义上述策略后,您可以创建阶段或直接加载到表中:

--create stage, list files, view file content
create or replace stage my_s3_stage url='s3://pubucket/test.csv';
ls @my_s3_stage;
select $1 from @my_s3_stage;

--or even load directly from file
create or replace table mytable (cola varchar);
copy into mytable from 's3://pubucket/test.csv';
select * from mytable;

【讨论】:

    【解决方案2】:

    这种方法可以将数据从 S3 导入雪花表:

    COPY INTO SNOW_SCHEMA.table_name  FROM  's3://test-public/new/solution/file.csv'
    

    【讨论】:

      猜你喜欢
      • 2020-02-19
      • 2017-01-13
      • 2019-06-15
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2022-01-27
      相关资源
      最近更新 更多