이번에는 파이썬으로 aws를 조작하는 boto3라는 라이브러리를 사용 하여 S3에 사진 파일을 업로드하고 다운로드하는 기능을 간단하게 구현해보려고 합니다.
일단 시작하기에 앞서 python에 boto3를 install 해주세요.
python -m pip install --upgrade boto3
boto3를 활용해 aws를 조작하기 위해서는 access key
와 secreat access key
를 가져와야 합니다. 키를 받기 위해서는 IAM에 사용자 추가를 해야합니다.
사용자 추가후
IAM 사용자를 생성하고 싶음을 선택후 아래는 자유롭게 선택하시면 됩니다.
다음 페이지로 넘어가면
권한 옵션에서 정책을 설정해주어야 합니다. 저희는 일단 S3를 사용할것이니 S3에 대한 권한을 가져옵니다.
모든 작업을 완료 후 사용자 생성을 완료하면
위와 같은 페이지가 나옴니다. 여기서 .csv 파일 다운로드 후 콘솔 로그인 URL을 복사 후 접속하시면 설정한 아이디와 비밀번호를 입력하면 IAM 사용자로 로그인이 가능한 것을 볼 수 있습니다. 콘솔 로그인 URL은 CSV파일에도 있으니 CSV파일은 꼭 가지고 계세요.
이제 다시 IAM 사용자 페이지를 간다면 저희가 생성한 IAM사용자를 확인할 수 있습니다.
여기서 사용자 이름을 클릭후 보안 자격 증명페이지에 들어가 줍니다.
여기서 아래로 스크롤 하시면 액세스키를 만들수 있는 곳에서 액세스 키를 만들면 됩니다.
액세스 키를 생성을 완료하면 다음과 같은 페이지가 나오는데 여기서 나온 액세스키와 시크릿 액세스키를 가지고 AWS에 접근합니다.
이 페이지에서도 csv파일을 제공하니 꼭 저장하고 다른곳에 유출하지 마세요.
aws에서 버킷 생성하는 방법에 대해서는 간단하게만 설명하겠습니다.
버킷이름을 설정하고 리전을 선택후에 맨 아래에 버킷 만들기를 통해 버킷을 생성할 수 있습니다.
이제 s3에 사진을 업로드, 다운로드할 준비가 완료 되었습니다.
사진 업로드 코드는 이렇게 됩니다.
import boto3
AWS_ACCESS_KEY_ID ="ACCESS_KEY"
AWS_SECRET_ACCESS_KEY = "SECRET_ACCESS_KEY"
AWS_DEFAULT_REGION = "리전 코드"
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
)
file_name = 'test.jpg' # 업로드할 파일 이름
bucket = 'junghun-bucket' #버켓 주소
key = 'test.jpg' # s3 파일 이미지
client.upload_file(file_name, bucket, key) #파일 저장
아까 받았던 access key와 secreat access key를 AWS_ACCESS_KEY_ID
여기와 AWS_SECRET_ACCESS_KEY
여기에 각각 넣어주면 됩니다. AWS_DEFAULT_REGION
여기에는 s3를 생성한 리전코드를 입력해주시면 됩니다.
그리고 file_name
에 업로드할 이미지 이름을 입력하고 bucket
에 설정한 버켓이름을 입력 key
값에는 bucket에 저장될 파일 이름을 입력해주고 실행 시키면 업로드 끝입니다.
위에서와 같이 파일이 정상적으로 업로드 된것을 확인 할 수 있습니다.
사진 다운로드 코드는 이렇게 됩니다.
import boto3
AWS_ACCESS_KEY_ID ="ACCESS_KEY"
AWS_SECRET_ACCESS_KEY = "SECRET_ACCESS_KEY"
AWS_DEFAULT_REGION = "리전 코드"
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
)
file_name = 'downLoad.jpg' # 다운될 이미지 이름
bucket = 'mufi-photo' #버켓 주소
key = 'test.jpg' # s3 이미지
client.download_file(bucket, key, file_name)
사진 업로드 코드와 같이 액세스키와 시크릿키 리전코드를 입력 후, key
에는 업로드한 파일 이름을 넣고 file_name
에는 다운로드한 이미지 파일명을 입력해주시면 됩니다.
실행을 시키면
위 사진 처럼 downLoad된 jpg파일을 확인할 수 있습니다.