본문 바로가기
Side Project/AWS와 Python으로 페이스북 챗봇 개발하기

[python] boto3를 통해 AWS 서비스와 연동하기 (boto3 예시 2가지)

by 잇서니 2020. 9. 27.
반응형

 

 

python으로 AWS 서비스를 사용하고 싶다면, boto3 패키지를 쓰면 됩니다.

boto3의 사용 예시 2가지를 정리해보려고 합니다.

그 전에 AWS CLI를 설정해둔 상태여야 합니다. AWS CLI 설정하는 방법은 따로 정리해두었습니다.

boto3를 설치하지 않았다면, pip install boto3 를 실행하여 설치합니다.

 

 

 

1) S3에 파일 넣기

import boto3
import pandas as pd

# 딕셔너리 -> DataFrame -> parquet 파일로 변환
top_tracks = {'id': ['35q0DyRH5bIXDoFGWJBjmC'], 'artist_id': '0kRAVpQhUUArA8UnYwEdeZ', 'name': ['Lonely Night'], 'popularity': [57], 'external_url': ['https://open.spotify.com/track/35q0DyRH5bIXDoFGWJBjmC']}
top_tracks = pd.DataFrame(top_tracks)
top_tracks.to_parquet('top-tracks.parquet', engine='pyarrow', compression='snappy')

s3 = boto3.resource('s3')
# s3.Object('s3 버킷이름', '버킷 내 디렉토리 경로') 
object = s3.Object('sunny-spotify-artist', 'top-tracks/dt={}/top-tracks.parquet'.format(dt))
data = open('top-tracks.parquet', 'rb')
# top-tracks.parquet 파일을 s3에 업로드!
object.put(Body=data)

put 메소드 외에 delete, get 등 s3에 다양한 작업을 할 수 있습니다. (공식문서 참고)

 

 

2) lambda function 호출하기

import boto3

lambda_client = boto3.client('lambda')
payload={'artist': 'TAEYEON'}

invoke_response = lambda_client.invoke(
    FunctionName = 'top_tracks',
    InvocationType = 'Event',
    Payload = json.dumps(payload)
)

if invoke_response['StatusCode'] not in [200, 202, 204]:
    logging.error("ERROR: Invoking lmabda function: failed")

boto3를 통해 lambda function을 호출하면 StatusCode값, LogResult 값 등을 얻을 수 있습니다. (공식문서 참고)

S3, Lamda function은 AWS의 대표 서비스입니다. 어떤 서비스인지 궁금하다면 링크를 참고하세요 🙂

 

 

반응형

댓글