일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 우한
- 전염병
- 확진자수
- 치앙마이
- 미중
- 코로나바이러스
- 봉준호감독통역사
- 정은경 본부장님
- 우한코로나바이러스
- sharonchoi
- 진짜영웅
- 우한 코로나
- 조현병
- 중국외교부
- cnn
- wuhan
- 필리핀사망
- red hearse
- parasite
- 코로나
- 창궐
- 우한코로나
- 최성재
- 웨일즈
- Bolton
- 신종코로나
- 코로나19
- everybody wants you
- 어서와한국은처음이지
- 봉준호감독통역
- Today
- Total
오지's blog
snowflake에서 AWS s3접근하는 2가지 방법정리 본문
1. AWS의 key기반으로 snowflake에서 s3에 접근하는 방법
snowflake에서 s3에 접근하기 위해서 stage라는 오브젝트를 생성하여 이 오브젝트에서 s3의 버킷명과 iam 메뉴를 통해 얻은 aceess key값들을 넣어주어야 한다. role방식보다 설정이 쉽다는 장점이 있지만 key가 털리면 snowflake의 데이터를 모두 볼수 있는 단점 그리고 snowflake에서 select로 key값을 볼수 있기 때문에 snowflake공식문서에서는 role기반 방식을 추천한다(물론 stage를 select할수 있는 권한이 있다면).
CREATE OR REPLACE STAGE GC URL='s3://s3버킷명'
CREDENTIALS=(aws_key_id='aws_key_id값' aws_secret_key='aws_secret_key값');
예시. CREATE OR REPLACE STAGE GC URL='s3://snow_s3'
CREDENTIALS=(aws_key_id='AKIXXXXXXXX' aws_secret_key='5/FOoXXXXXXXX');
2. AWS의 role기반으로 snowflake에서 s3에 접근하는 방법
step1. 정책생성 - snowflake s3업로드 다운로드용 정책생성 - 버킷명 snow-dynamic-storage와 dr이라 가정
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource": ["arn:aws:s3:::snow-dynamic-storage/*", "arn:aws:s3:::dr/*"]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": ["arn:aws:s3:::snow-dynamic-storage", "arn:aws:s3:::dr"],
"Condition": {
"StringLike": {
"s3:prefix": [
"*"
]
}
}
}
]
}
**주의 첫번째는 "Resource": ["arn:aws:s3:::snow-dynamic-storage/*", "arn:aws:s3:::dr/*"] 두번째는 /* 제외한 "Resource": ["arn:aws:s3:::snow-dynamic-storage", "arn:aws:s3:::dr"]
step2. 역할 생성
step3. snowflake 클라이언트에서 integration 객체 생성
create storage integration aws_s3_access
type = external_stage
storage_provider = 'S3'
enabled = true
storage_aws_role_arn = 'arn:aws:iam::120xxxxxxxx:role/snowrole'
storage_allowed_locations = ('s3://dr/', 's3://snow-dynamic-storage/');
show storage integrations;
describe storage integration aws_s3_access;
step4. AWS에서 신뢰관계 설정
step5. stage생성
CREATE OR REPLACE STAGE TEST_STAGE
STORAGE_INTEGRATION = aws_s3_access
URL = 's3://snow-dynamic-storage';
step6. S3의 파일오브젝트 로딩 확인
list @test_stage;
참고문서. 첨부파일
'개발노트 > 데이터베이스' 카테고리의 다른 글
insert into select 시 특정 컬럼만 제외하고 SELECT하는 방법 - SNOWFLAKE (0) | 2023.04.05 |
---|---|
snowflake에서 select시 where절의 서브 쿼리 between이용 하여 정제 (0) | 2023.03.16 |
m1 맥북에서 pymssql설치 방법 (0) | 2022.08.18 |
Snowflake DELETE쿼리를 효율적으로 수행하는 방법(범용) (0) | 2022.07.01 |
snowflake 에러메세지: 100096 (22007): Can't parse 'y' as timestamp with format 'AUTO' 에러 발생 원인과 해결책 (0) | 2022.05.31 |