雪花云数据平台-使用阶段区域失败.原因:[拒绝访问(状态代码:403;错误代码:拒绝访问)]



我是雪花的新手,我已经创建了一个外部舞台和一个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日志交付组

这些步骤将帮助您解决问题。

最新更新