터칭 데이터
Snowflake 실습 - AWS IAM 설정하기 본문
실습의 단계별 목표
1. DEV 데이터 베이스 만들기
2. 3개의 스키마 만들기
3. COPY SQL을 이용해 S3의 csv파일들을 벌크 업데이트하여 raw_data 스키마 밑에 테이블들 만들기
4. 그 과정에서 AWS IAM User(사용자)를 설정
5. analytics 스키마 밑에 summary 테이블을 만들기
이번 시간에는 위의 볼드체로 표시된 4번을 실습해 보려합니다. 아마 의문이 드실 겁니다.
Snowflake 실습에서 웬 AWS IAM?
Snowflake에서 COPY를 이용해 AWS S3의 파일들을 벌크 업데이트할 수 있다고 했었습니다.
그런데 Snowflake라는 외부에서 AWS S3에 접근하기 위해서는 AWS IAM에서 새로운 User(사용자)를 만들고 이 사용자의 Access key와 Secret access key를 쿼리문으로 사용해야 합니다.
먼저 Snowflake에서 COPY를 위한 쿼리를 보시겠습니다.
COPY INTO dev.raw_data.session_timestamp
FROM 's3://jon-test-bucket/test_data/session_timestamp.csv'
credentials=(AWS_KEY_ID='A…EK' AWS_SECRET_KEY='X…UH')
FILE_FORMAT = (type='CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSED_BY='"');
dev 데이터 베이스의 raw_data 스키마의 session_timestamp라는 테이블에
AWS S3의 jon-test-bucket 버킷의 test_data 폴더의 session_timestamp.csv 파일을 COPY해서 레코드를 입력하는데
파일의 포맷은 CSV이고 CSV의 첫행은 헤더이므로 스킵하며
"John Doe", "123 Main St, Apt 4B", "New York, NY"
CSV파일의 데이터들이 위와 같이 큰따옴표로 둘러 쌓여있다면 이를 레코드로 COPY할 때 큰따옴표로 둘러 쌓인 데이터들을 포함하라는 뜻입니다.
여기서 credentials가 AWS_KEY_ID와 AWS_SECRET_KEY를 파라미터로 갖는 것을 보실 수 있습니다.
이 2개의 값을 AWS IAM USER에서 확인한 뒤 붙여넣기 해야 벌크 업데이트가 가능합니다.
주의 하실점이 있는데 절대로 AWS admin 사용자의 AWS KEY ID와 AWS SECRET KEY를 사용하시면 안됩니다.
AWS admin 사용자의 AWS KEY ID와 SECRET KEY로는 AWS의 모든 서비스를 마음대로 사용할 수 있기 때문에 노출되었을시 해킹의 위험이 매우 크기 때문입니다.
그래서 반드시 Snowflake의 S3 버킷 접근을 위한 전용 사용자를 IAM으로 생성한 뒤 그 사용자의 AWS KEY ID와 AWS SECRET KEY를 COPY 쿼리에 사용해야 합니다.
AWS KEY ID는 AWS에서 Access key, AWS SECRET KEY는 Secret access key입니다.
자 이제 실습을 해봅시다.
AWS IAM USER 실습
AWS IAM 서비스의 좌측 사용자(User)를 메뉴에서 선택한 뒤 사용자 생성을 클릭합니다.
저는 사용자 이름을 snowflake_s3로 지어주겠습니다.
파란색 박스는 snowflake_s3라는 사용자가 AWS 웹 콘솔에 접속할 수 있도록 할 것인지 묻는 체크박스입니다. snowflake_s3가 실제 사람이라면 체크하는 것이 일반적이지만 지금 우리가 만드는 snowflake_s3 사용자는 Snowflake에서 S3 버킷에 접근할 수 있도록 하는 용도이기 웹 콘솔에 접근할 이유가 없죠? 때문에 체크하지 않습니다.
우측 하단의 다음 버튼을 클릭해주세요.
직접 정책 연결을 선택합니다.
S3read를 검색해 AmazonS3ReadOnlyAccess를 선택한 후 다음을 클릭합니다.
사족입니다만 아무런 권한을 주지 않거나 어떤 그룹에도 사용자를 추가하지 않으면 무권한 사용자가 생성됩니다. 의미 없는 행동 같지만 이런 무권한 사용자를 만드는 이유도 있기는 합니다.
이제 Account의 모든 S3 버킷을 읽을 수 있는 권한을 가진 Snowflake_s3 사용자가 생성되었습니다.
모든 S3 버킷이 아닌 일부 S3 버킷에만 접근할 수 있도록 권한을 편집해서 제공하는 것이 일반적이고 더 권장되지만 지금 실습에서는 넘어가겠습니다.
사용자 생성을 눌러주세요.
성공적으로 생성되었습니다.
snowflake_s3를 클릭해주세요.
그리고 보안 자격 증명(Security credentials) 탭을 선택하고 조금 아래로 내려가보면
액세스 키가 없습니다. 액세스 키 만들기를 클릭합니다.
Snowflake는 AWS 외부에서 도는 애플리케이션입니다. AWS 외부에서 실행되는 애플리케이션을 선택하고 다음 버튼을 클릭하세요.
액세스 키의 용도를 메모해둘 수 있는 설명 태그 입력란이 제공됩니다. 적어주셔도 좋고 넘어 가셔도 좋습니다.
액세스 키 만들기를 클릭합니다.
이제 2개의 키를 이용해 Snowflake에서 S3의 파일을 COPY할 수 있습니다.
참고로 따로 저장하지 않고 완료를 누르면 액세스 키를 분실했을 시 다시 만들어야 합니다.
csv 파일 다운로드 버튼을 이용하시거나 따로 복사해주세요.
'데이터 웨어하우스(Data Warehouse)' 카테고리의 다른 글
Snowflake Role과 User 생성 (0) | 2023.11.30 |
---|---|
Snowflake 실습 - DB, 스키마, 테이블 생성 (0) | 2023.11.30 |
Snowflake Worksheet 간단한 기능들 (0) | 2023.11.30 |
Snowflake Database & Warehouse (0) | 2023.11.30 |
Snowflake 무료 체험판 (0) | 2023.11.30 |