Boto3: resource vs. client

All We Need is Data, itself !·2022년 4월 12일
0

Boto3: resource vs. client


boto3를 boto3.resource( ) 로 대부분 사용해왔는데 생각해보니 resource 말고 client로 프로젝트를 했던 기억이 났다
?? 분명 프로젝트 할 때 멘토님께서 resource로 대부분 되는데 client가 더 큰 개념? 이라고 하셨던 것 같은데 정확하지 않은 것 같아서 자료를 찾아보다가 여기까지 왔다

근데 찾아보고 나니 그냥 말그대로 더 큰 개념과 작은 개념이 맞음 .. 

INTRODUCTION

AWS의 Boto3 라이브러리는 파이썬 어플리케이션과 다양한 AWS 서비스를 통합하기 위해 만들어졌음

Client

클라이언트는 low-level의 인터페이스를 제공함
boto3와 AWS CLI에서 사용되는 botocore package의 JSON service로부터 왔음

Boto3 Client를 사용하는 이점은 다음과 같다

  • 실제적인 AWS 서비스 API와 1:1매칭된다
  • 모든 AWS 서비스들은 client에게서 제공됨

AWS어카운트에서 S3버킷의 리스트 보기 예시

import boto3

s3 = boto3.client("s3")
response = s3.list_buckets()

for bucket in reponse['buckets']:
	print(f"bucket : {bucket['Name']}')
개인적으로 이 형태? response의 리스트 내의 리스트 혹은 어레이.. 이 형태가 좀 성가시다고? 생각함 ㅠ열심히 찍어가면서 확인해야함..

client refs: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/clients.html


Resource

리소스는 client보다 좀 더 높은 레벨임
리소스는 boto 라이브러리 자체에서 JSON 리소스로 정의되어있다

리소스는 다양한 AWS 서비스들 사이의 상호작용을 위한 객체 지향적인 인터페이스임

import boto3

s3 = boto3.resource("s3")

Identifiers

그 외에 Identifier라고 해서 각각의 리소스에서 자체적으로? 제공하는 특별한 값들이 있다고 한다.
예를 들어 다음과 같은 것들임


bucket = s3.Bucket(name = "bucket1")

obj = s3.Object(bucket_name = "bucket1", key = "test.py")

이런 것들은 필요할 때마다 AWS docs 찾아가면서 쓰면 된다

docs : https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html


Clients vs Resources

요약하자면, resource는 client보다 조금 더 높은 레벨임. (뭐라는겨...)
resource는 너무 많은 디테일을 신경쓰지 않고 AWS 서비스를 사용할 때 쓰면 좋다.
말하자면, resource로 쓰인 코드들은 좀 더 심플한 경향이 있다.

하지만 resource가 AWS의 모든 서비스에 사용할 수 없다는 건 아님. 어떨 땐 client보다 낫기도 하다.


ref : https://www.learnaws.org/2021/02/24/boto3-resource-client/
원문은 docs에 있는 내용을 필요한 것만 가져다 쓴 것으로 보임. 이해가 안된다면 docs를 정독하자.!

profile
분명히 처음엔 데린이었는데,, 이제 개린이인가..

0개의 댓글