Xi12
Xi12

Reputation: 1223

Failure using stage area. Cause: [Access Denied (Status Code: 403; Error Code: AccessDenied)]

I am new to snowflake and I have create a external stage and a give my s3 bucket url. My task is to copy json file from s3 to snowflake table. When I run copy command I am gettingan error .

My command are as follows:

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

Error: Failure using stage area. Cause: [Access Denied (Status Code: 403; Error Code: AccessDenied)].

When searched on internet it says I need "S3 bucket Integration" . I havent created one is this needed?

Thanks, Xi

Upvotes: 3

Views: 13460

Answers (3)

Kranthi Kumar
Kranthi Kumar

Reputation: 4614

I faced the same issue while copying the data from s3 to the snowflake table. After a lot of troubleshooting, I finally sorted it out. If you are using a personal s3 bucket for learning or training purposes this will be helpful.

Step 1:

The first goto >> s3 bucket >> permissions >> block public access >> uncheck Block all public access.

Try compiling the query. If your issue didn't resolve with step 1 then follow step 2 along with step 1.

The first goto >> s3 bucket >> permissions >> Bucket policy >> edit >> enter the below script and change the resource to your bucket name.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
    ]
}

now scroll down to Cross-origin resource sharing (CORS) >> edit >>

[
    {
        "AllowedHeaders": [
            "Authorization",
            "Content-Length"
        ],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

Try compiling the query. If your issue didn't resolve with steps 1 & 2 then follow step 3 along with steps 1 & 2.

Goto >> permissions >> Object Ownership >> click on ACL's Enabled >> save changes >> Goto permissions >> access control list >> edit >> give access to Everyone (public access) to list and read an s3 log delivery group.

These steps will help you resolve the issue.

Upvotes: 0

Praneeth
Praneeth

Reputation: 761

The s3 bucket integration is done using Storage integration in snowflake. Storage integration is used to authenticate/authorise the s3 access. Stage is created on top of a storage integration to access s3 locations that you want.

Read how to create storage integration here and access external storage: https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html

Do follow the above doc(it is quite exhaustive) and let me know if you face any challenges

Upvotes: 2

NickW
NickW

Reputation: 9818

You don’t appear to have set up secure access to s3. You’ll probably want to read the documentation

Upvotes: 2

Related Questions