반응형
python으로 S3Hook을 사용하여 S3에 접근해보자.
그 전에 Airflow 서버에 AWS 인증설정이 되어 있어야 한다. (참고)
그리고 Airflow 서버에서(EC2 사용) S3에 접근권한을 설정해야 한다.
- IAM에 역할 설정 (EC2 to S3 Access)
- EC2에 해당 역할 적용
from airflow.hooks.S3_hook import S3Hook
bucket = '버켓이름'
s3_hook = S3Hook(bucket)
#S3 디렉토리 리스팅
keys = s3_hook.list_keys(bucket_name=bucket)
# s3에 업로드
s3_key = 'sunnydir/sunnytest.csv'
s3_hook.load_file(filename='/var/lib/airflow/test/test.csv',key=s3_key,bucket_name=bucket)
# S3에 버킷명/sunnydir/sunnytest.csv 파일이 생긴다
# 파일 지우기
s3_hook.delete_objects(keys=s3_key, bucket=bucket)
#디렉토리 지우기 (버킷/sunnytest/ 하위 파일들 삭제)
s3_key = 'sunnytest'
keys = s3_hook.list_keys(bucket_name=bucket,prefix=s3_key)
print(keys)
if keys:
for k in keys:
s3_hook.delete_objects(bucket=bucket, keys=k)
keys = s3_hook.list_keys(bucket_name=bucket)
print(keys)
반응형
'Side Project > Airflow로 ETL 구축하기' 카테고리의 다른 글
[Airflow] task에서 return한 값 사용하기 (XCom) (6) | 2021.02.19 |
---|---|
[Airflow] python 함수 호출시 argument 넘기기 (4) | 2021.02.19 |
Airflow 스케쥴시간 설정 (execution_date, start_date) (3) | 2021.01.31 |
Airflow 설치 및 DAG 실행하기 (4) | 2021.01.30 |
댓글