我是雪花的新手,我已经创建了一个外部舞台和一个give我的s3 bucket url。我的任务是将json文件从s3复制到snowflake表中。当我运行复制命令时,我得到一个错误.
我的命令如下:
create or replace file format investor_fileformat
type = 'json';
create or replace stage investor_stage
file_format = investor_fileformat url ='s3://emb-ingest-pit/extract/active/Test120220110/';
create table temp (id variant)
copy into temp from @investor_stage/Investor_20220114.json
错误:使用后台区域失败。原因:[拒绝访问(状态代码:403;错误代码:拒绝访问(]。
当在互联网上搜索时,它说我需要";S3桶集成"。我还没有创建一个,这需要吗?
谢谢,Xi
您似乎还没有设置对s3的安全访问。你可能想阅读文档
s3存储桶集成是使用雪花中的存储集成完成的。存储集成用于验证/授权s3访问。Stage是在存储集成之上创建的,用于访问您想要的s3位置。
阅读如何在此处创建存储集成并访问外部存储:https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html
请按照上面的文档(它非常详尽(,如果你面临任何挑战,请告诉我
我在将数据从s3复制到雪花表时遇到了同样的问题。经过大量的故障排除,我终于把它解决了。如果您将个人s3存储桶用于学习或培训目的,这将很有帮助。
步骤1:
第一个goto>gt;s3桶>gt;权限>gt;阻止公共访问>gt;取消选中阻止所有公共访问。
请尝试编译查询。如果您的问题没有通过步骤1解决,请按照步骤2和步骤1进行操作。
第一个goto>gt;s3桶>gt;权限>gt;桶策略>gt;编辑>gt;输入以下脚本并将资源更改为您的bucket名称。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
}
]
}
现在向下滚动到跨来源资源共享(CORS(>gt;编辑>gt;
[
{
"AllowedHeaders": [
"Authorization",
"Content-Length"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
请尝试编译查询。如果您的问题没有通过步骤1&2,然后跟随步骤3以及步骤1&2.
转到>gt;权限>gt;对象所有权>gt;单击ACL的启用>gt;保存更改>gt;转到权限>gt;访问控制列表>gt;编辑>gt;允许访问Everyone(公共访问(以列出并读取s3日志交付组
这些步骤将帮助您解决问题。