사전 준비
aws cli v2와 boto3가 설치되어 있어야 하며 aws configure에 Access Key와 Secret Key가 등록되어 있어야 한다.
boto3 설치와 설정 및 간단하게 사용해보기 (tistory.com)
이전 글에 해당 내용들이 모두 포함되어 있으므로 참고할 것.
1. S3 bucket 생성
AWS Boto3 공식문서에 가면 친절하게 샘플 코드가 주어진다.
# createbucket.py
import logging
import boto3
from botocore.exceptions import ClientError
def create_bucket(bucket_name, region):
# Create bucket
try:
if region is None:
s3_client = boto3.client('s3')
s3_client.create_bucket(Bucket=bucket_name)
else:
s3_client = boto3.client('s3', region_name=region)
location = {'LocationConstraint': region}
s3_client.create_bucket(Bucket=bucket_name,
CreateBucketConfiguration=location)
except ClientError as e:
logging.error(e)
return False
return True
create_bucket('joon-boto3-test-bucket','ap-northeast-2')
Boto3 공식문서에서 제공하는 샘플 코드의 마지막줄에 인수와 함께 함수를 호출하는 "create_bucket('joon-boto3-test-bucket','ap-northeast-2')" 를 추가하고 createbucket.py 라는 이름으로 저장한다.
createbucket.py를 실행하고 이전 글에서 생성해둔 bucketlist.py를 실행하여 bucket의 목록을 조회해보았다.
joon-boto3-test-bucket이 정상적으로 생성된 것을 볼 수 있다.
콘솔에서 직접 확인해보면 joon-boto3-test-bucket이 생성되어있다.
2. S3 bucket에 파일 업로드
ansible.png라는 파일을 방금 생성한 joon-boto3-test-bucket에 업로드할 것이므로 ansible.png를 파이썬 코드가 작성되는 폴더로 경로를 이동시켜준다.
# s3_upload.py
import logging
import boto3
from botocore.exceptions import ClientError
def upload_file(file_name, bucket, object_name=None):
# If S3 object_name was not specified, use file_name
if object_name is None:
object_name = file_name
# Upload the file
s3_client = boto3.client('s3')
try:
response = s3_client.upload_file(file_name, bucket, object_name)
except ClientError as e:
logging.error(e)
return False
return True
upload_file('ansible.png','joon-boto3-test-bucket')
boto3 공식문서에서 제공되는 샘플 코드의 마지막줄에 upload_file을 인수와 함께 호출하는 문장을 추가로 작성하였다.
만약 업로드될 때 이름을 지정하고 싶으면 upload_file의 함수를 호출할 때 3번째 인수로 원하는 파일 이름을 적어주면 된다.
s3_upload.py를 실행하여 업로드를 진행한다.
aws 콘솔에서 확인해보면 ansible.png 파일이 정상 업로드 된 것을 볼 수 있다.
3. S3 bucket에서 파일 다운로드
# s3_download.py
import boto3
s3 = boto3.client('s3')
s3.download_file('joon-boto3-test-bucket', 'ansible.png', 'ansible2.png')
s3.download_file('버킷 이름','버킷에서 내려받을 오브젝트 이름','로컬pc에 저장할 이름')으로 작성하여 함수에 인수를 전달한다.
s3_download.py를 실행한다.
ansible2.png라는 이름으로 해당 파일을 s3 버킷으로부터 내려받아진 모습이다.
'AWS CLI, Boto3' 카테고리의 다른 글
DynamoDB with Boto3(Python) 4편 (0) | 2021.07.18 |
---|---|
DynamoDB with Boto3(Python) 3편 (0) | 2021.07.18 |
DynamoDB with Boto3(Python) 2편 (0) | 2021.07.16 |
DynamoDB with Boto3(Python) 1편 (0) | 2021.07.16 |
boto3 설치와 설정 및 간단하게 사용해보기 (0) | 2021.07.14 |