AWS로 개발하기 - python으로 S3 버킷 생성하고 작업하기

joong·2022년 8월 16일
2

AWS에서 개발하기

목록 보기
5/6

프로그래밍 방식으로 버킷 생성, S3 객체에 CRUD 작업 하는 방법, S3 객체 관리 위한 배치 작업

✔️ HeadBucket API 작업

HeadBucket API는 버킷이 존재하는지, 해당 버킷에 액세스 권한 있는지 확인

  • 버킷이 존재하고 액세스 권한 있는 경우 200 OK 코드 반환
  • 버킷이 존재하지 않거나 액세스 권한 없으면 404 Not Found 또는 403 Forbidden 코드 반환

Python 예제

def verifyBucketName(s3Client, bucket):
	try: 
    	# 버킷이 AWS에 이미 존재하는지 확인
    	s3client.head_bucket(Bucket=bucket)
    	raise SystemExit("버킷이 이미 생성되었습니다")
  	except botocore.exceptrions.ClientError as e: 
    	error_code=int(e.response['Error']['Code']
        if error_code == 404:
       		print("버킷이 존재하지 않습니다. 계속 진행해주세요")
      	if error_code == 403:
        	raise SystemExit("이 버킷은 이미 다른 AWS 계정에 존재합니다")

✔️ phyton으로 S3 버킷 생성하기

버킷 생성하기 - Python

s3_client = boto3.client('s3', region_name = region)
location = {'LocationConstraint':region}
s3_client.create_bucket(bucket=bucket_name, CreateBucketConfiguration=location)
# 클라이언트와 동일한 리전에서 버킷을 생성

버킷 생성될때 까지 기다리기 - Python

waiter = s3Client.get_waiter('bucket_exists')
waiter.wait(Bucket=bucket)

✔️ phyton으로 S3 객체 작업하기

▶️ 객체 업로드: PUT

  • 객체 복사: 객체 사본 생성, 원래 객체 삭제하여 객체 이름 재지정, 여러 S3위치에 걸쳐 이동, 객체 메타데이터 업데이트
    → 최대 5GB 객체를 단일 PUT 작업으로 객체 업로드 복사, 최대 5TB 까지 멀티파트 업로드 가능

▶️ 데이터 검색: GET 및 HEAD

  • 객체 및 메카데이터 가져오기: GetObject
  • 객체 메타데이터 가져오기: HeadObject/ GetObjectAcl/ GetObjectTagging

객체 가져오기 - Python

def get_object(bucket, object_key):
	try:
    	obj = s3.Object(bucketname, object_key)
        body = obj.get()['Body'].resd()
        logger.info("Got object '%s' from bucket '%s'.", object_ley, bucket_name)
    except ClientError:
    	logger.exception(("Cloudn't get object '%s' from bucket '%s'.", 
        					object_key,bucket_name))
    	raise
    else:
    return body

▶️ 객체 관련 작업: S3 Select

SQL 표현식 사용해 객체에서 데이터 하위 집합 검색
GET 메서드보다 빠르고 저렴하게 사용할 수 있다.

0개의 댓글