일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 표준편차
- 서브쿼리
- leetcode
- 설명의무
- SQL 날짜 데이터
- 자연어 논문
- torch
- sql
- t분포
- 그룹바이
- Statistics
- MySQL
- GRU
- inner join
- airflow
- update
- Window Function
- NLP
- LSTM
- 자연어 논문 리뷰
- 논문리뷰
- 짝수
- HackerRank
- CASE
- 코딩테스트
- SQL코테
- sigmoid
- 카이제곱분포
- 자연어처리
- nlp논문
- Today
- Total
HAZEL
[S3] 파이썬으로 S3에 접근해서, 대용량 데이터 가져오기 본문
파이썬 코드로, s3에 있는 대용량 데이터를 가져오는 코드
aws에서 iam에서 만들기
# 필요한 모듈 import
import boto3
2. s3에 접근
: 같은 vpc 나 보안 그룹에 포함되어있는 aws 서버에서는 aws_key 를 입력하지 않아도 되지만, 로컬에서 작업하기 위해서는 아래와 같이 키를 넣어줘야한다. 관련 키 만드는 부분은 다른 글에 정리할 예정이다.
# s3 에 접근하기 위해서 코드 작성
s3 = boto3.client('s3'
,aws_access_key_id='aws에서 iam에서 만들기'
,aws_secret_access_key='aws에서 iam에서 만들기')
3. 데이터 가져오기
: 그냥 몇개 가져오도록 작업할 수 있지만, 한번에 1000개씩이 아닌, 많은 데이터를 가져오기 위해서는 paginator을 사용해야한다.
과거에는 아래 코드와 같이 작업을 하였으나, 이제는 get_paginator을 이용해서, list_objects_v2를 사용해야하는 것으로 보인다.
object_list = s3.list_objects_v2(**args)
새로 작성한 코드이다.
paginator을 이용하여 iterator을 만든 이후, for 문을 돌려서 해당 데이터가 있다면 가져오는 식으로 작업한다.
def get_object_key_list(**args):
keys = []
# 1000개씩 반환되는 list_objects_v2의 결과 paging처리를 위한 paginator 선언
paginator = s3.get_paginator("list_objects_v2")
page_iterator = paginator.paginate(**args)
for page in page_iterator:
contents = page['Contents']
for log in contents:
keys.append(log['Key'])
return keys
4. 데이터를 가져오는 함수를 넣기
: 위에서 작성한 함수를 실행하면, 아래와 같은 데이터 리스트들이 output으로 나오게 된다.
get_object_key_list(Bucket='버킷이름 넣기', Prefix='데이터 위치넣기')
- 참고한 문서
- https://gaussian37.github.io/python-etc-s3_storage_for_boto3/
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nan17a&logNo=221983762741
- https://asecurity.dev/entry/Python-Boto3-lib-paginator-%ED%86%B5%ED%95%9C-S3-%EB%8C%80%EB%9F%89-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0
- https://gonigoni.kr/posts/list-over-1000-files-from-s3/
'DATA ENGINEERING > AWS' 카테고리의 다른 글
[awswrangler] 데이터프레임을 Redshift로 한번에 넣는 방법 (0) | 2022.04.13 |
---|