본문 바로가기
Side Project/Airflow로 ETL 구축하기

[Airflow] Airflow 서버에서 S3 접근하기 (S3Hook)

by 잇서니 2021. 3. 13.
반응형

 

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)

 

 

반응형

댓글