[Python] boto3로 AWS S3 사용하기

hwwwa·2022년 2월 17일
1

🐼 Python

목록 보기
16/18
post-thumbnail

boto3 설치 및 기본설정은 여기서 👉 [Python] boto3로 AWS S3와 연동하기

Amazon boto3 공식 문서를 참고하였음 👉 AWS boto3 document - S3

boto3.client

import boto3

AWS_ACCESS_KEY_ID ="[access_key]"
AWS_SECRET_ACCESS_KEY = "[secret_key]"
AWS_DEFAULT_REGION = "ap-northeast-2"
client = boto3.client('s3',
                      aws_access_key_id=AWS_ACCESS_KEY_ID,
                      aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
                      region_name=AWS_DEFAULT_REGION
                      )

response = client.list_buckets() # bucket 목록
print(response)
  • AWS 기본 설정을 해두었다면 아래의 코드로 동일한 결과 확인 가능
import boto3

client = boto3.client('s3')

response = client.list_buckets() # bucket 목록
print(response)

boto3.resource

  • boto3.client를 wrapping한 high-level, 객체지향적 interface
  • Identifier, Attribute, Action
  • boto3.client의 모든 기능을 wrapping한 것이 아니라서 필요하다면 boto3.client 혹은 boto3.resource.meta.client를 사용
import boto3

s3 = boto3.resource('s3')

for bucket in s3.buckets.all(): # bucket 목록
    print(bucket.name)

boto3.session

  • 설정 상태를 저장
  • client 또는 resource 서비스를 생성하기 위한 권한을 부여하기 위해 사용
  • session은 잘 사용되지 않음
import boto3

session = boto3.Session(
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
    region_name=AWS_DEFAULT_REGION
)

s3 = session.resource('s3')  # s3에 대한 권한 및 상태를 s3(변수)에 저장

for bucket in s3.buckets.all():
    print(bucket.name)

boto3.bucket

  • S3의 특정 버킷에 접근하기 위해 사용
  • IAM에 ListObjects(ListObjects의 권한 키워드는 'ListBucket')에 대한 접근 권한 등록 필요
BUCKET_NAME = "test"

buckets = s3.Bucket(name=BUCKET_NAME)
print(buckets)
# 출력: s3.Bucket(name='test')

for obj in buckets.objects.all():
    print(obj)
    print(obj.key)
    # error 발생: An error occurred (AccessDenied) 
		# when calling the ListObjects operation: Access Denied

boto3.object

  • bucket에 저장된 객체(파일)에 접근하기 위해 사용
BUCKET_NAME = "test"
object_key = "testImg/test.png"

s3 = boto3.resource('s3')

object_ = s3.Object(BUCKET_NAME, object_key)

print(object_)
# 출력: s3.Object(bucket_name='test', key='testImg/test.png')

0개의 댓글