【发布时间】:2020-05-09 17:34:15
【问题描述】:
我正在尝试将 Snowflake 中特定查询的结果直接卸载到 S3 位置。
copy into 's3://bucket-name/folder/text.csv'
from <Some SQL Query>
file_format = (type = CSV file_extension = '.csv' field_optionally_enclosed_by = NONE empty_field_as_null = false)
max_file_size = 5000000000
storage_integration = aws
single = true;
这个问题是在写入成功后,bucket owner 无法从 S3 读取新文件,因为 ACL。 那么,如何在从 Snowflake 写入 S3 时添加“Bucket-Owner-Full-Control”的预设 ACL?而且我对 Google Cloud Storage 不太了解,GCS 存储桶中的场景会是什么??
【问题讨论】:
-
有点猜想,但是:当您运行
copy into <location>命令时,您必须指定要使用的用户/存储集成。文件将以该用户身份卸载,这可能是导致权限问题的原因。 -
@SimonD 是的,这就是问题所在。 Snowflake 使用专门为一个特定 Snowflake 账户创建的 AWS 用户(在他们的 AWS 账户中),我们将其作为可信实体添加到我们为 Snowflake 用户创建的角色中以承担。因此,在写入该位置时应该有一些配置来指定 ACL。我们可以为此目的使用 Canned ACL,但不确定如何使用雪花。docs.snowflake.net/manuals/user-guide/…
-
我认为 Snowflake 使用了您在您使用的凭据/存储集成对象中指定的用户,而不是他们自己的?
-
@SimonD 是的,但无论使用哪种凭据,如果没有标准 ACL,存储桶所有者仍然没有足够的权限访问对象。存储桶所有者可能与写入存储桶的实体不同。
-
您是否尝试过在舞台设置中使用身份验证信息将 s3 位置创建为舞台?
标签: amazon-web-services amazon-s3 snowflake-cloud-data-platform snowflake-schema