Object Storage API로 이미지 업로드
이번 가이드에서는 카카오클라우드 Object Storage API를 이용하여 Python 코드로 Object Storage에 이미지를 업로드하는 방식을 설명합니다. 카카오클라우드에서는 Object Storage API를 통해 코드 기반으로 Object Storage를 관리할 수 있습니다. 이번 가이드에서는 Python 코드로 Object Storage API를 호출해 Object Storage의 버킷과 오브젝트를 관리하는 예제를 제공합니다.
- 소요 시간: 20분
- 사용자 환경
- Region: kr-central-2
- 사전 준비 사항
- Python 실행 환경 세팅
- pip: 파이썬 패키지 관리 도구 설치
시작하기 전에
액세스 키 발급
IAM 사용자 자격 증명인 액세스 키(Access key)는 액세스 키 ID와 보안 액세스 키를 의미하며, API 인증 토큰 발급 시 필요한 정보입니다.
API 사용 준비 문서를 참고하여 액세스 키를 발급하시기 바랍니다.
액세스 키 ID 및 보안 액세스 키 생성 시, 액세스 키 생성 창을 닫은 이후에는 정보를 다시 조회할 수 없습니다. 해당 정보를 복사하여 클립보드에 저장 후 별도로 관리하시기 바랍니다.
API 인증 토큰 발급
API 인증 토큰은 카카오클라우드 계정 ID와 비밀번호를 대신하는 토큰으로, API 인증 토큰을 사용하여 CLI나 API를 통해서 애플리케이션이나 서비스를 인증할 수 있습니다. 액세스 키 발급 후, 액세스 키 ID와 보안 액세스 키를 이용해 API 인증 토큰을 발급할 수 있습니다.
API 사용 준비 문서를 참고하여 API 인증 토큰을 발급하시기 바랍니다.
기본적으로 API 인증 토큰은 12시간 이후 만료되며, 상황에 따라 12시간 이내라도 변경되거나 만료될 수 있습니다.
파이썬 requests 모듈 설치하기
pip
명령어를 통해 파이썬 requests 모듈을 설치합니다. requests 모듈은 파이썬에서 간단한 HTTP 요청을 처리하기 위해 사용합니다.
pip install requests
API 호출로 버킷 관리
이번 가이드에서는 파이썬으로 API 호출 코드를 작성합니다. 파이썬 파일(.py)을 생성해 해당 파일에서 작업을 진행해주시기 바랍니다.
Step 1. 버킷 생성하기
-
Object Storage를 이용하기 위해 버킷(Bucket)을 생성하는 API 호출 코드를 작성합니다.
버킷 생성 API 호출import requests
import json
def createBucket():
headers = {
'X-Auth-Token': '{X_AUTH_TOKEN}',
'Content-Type': 'application/json'
}
data = {
"name": "{BUCKET_NAME}",
"type": "STANDARD",
"use_encryption": True,
"encryption_configuration": {
"type": "managed"
}
}
res = requests.put('https://objectstorage.kr-central-2.kakaocloud.com/v1_ext/bucket', headers=headers, data=json.dumps(data))
print(res.status_code)
createBucket()변수 설명 X_AUTH_TOKEN API 인증 토큰 BUCKET_NAME 생성할 버킷 이름 -
실행 결과로 HTTP 요청에 대한 Status code가 출력됩니다. Status 값을 통해 요청 실행 결과를 확인할 수 있습니다.
버킷 생성 요청에 대한 응답 Status Code 정보
HTTP Status 응답 내용 설명 201
OK Bucket 성공 401
Unauthorized 권한 없음 409
Conflicts 생성 실패
- 동일한 bucket_name 이미 존재 -
카카오클라우드 콘솔 > Object Storage 서비스의 버킷 목록에서 생성된 버킷을 확인할 수 있습니다.
Step 2. 버킷 접근 관리하기
-
버킷에 대한 접근을 관리하는 API 호출 코드를 작성합니다. 이번 예제에서는 버킷에 대한 모든 IP 주소의 퍼블릭 액세스를 허용합니다.
버킷 접근 관리 API 호출import requests
import json
def manageBucketAccess():
headers = {
'X-Auth-Token': '{X_AUTH_TOKEN}',
'Content-Type': 'application/json'
}
data = {
"name": "{BUCKET_NAME}",
"acl": {
"public": "read-only"
}
}
res = requests.post('https://objectstorage.kr-central-2.kakaocloud.com/v1_ext/bucket/{BUCKET_NAME}', headers=headers, data=json.dumps(data))
print(res.status_code)
manageBucketAccess() -
실행 결과로 HTTP 요청에 대한 응답 Status code가 출력됩니다. Status 값을 통해 요청 실행 결과를 확인할 수 있습니다.
버킷 접근 관리 요청에 대한 응답 Status Code 정보
HTTP Status 응답 내용 설명 200
OK Bucket 성공 401
Unauthorized 권한 없음 404
Not found 버킷 찾을 수 없음
API 호출로 오브젝트(File & Folder) 관리
Step 1. 폴더 생성하기
-
생성된 버킷 안에 폴더를 생성하는 API 호출 코드를 작성합니다.
폴더 생성 API 호출import requests
def createFolder():
headers = {
'X-Auth-Token': '{X_AUTH_TOKEN}',
'Content-Type': 'application/directory',
'X-Object-Meta-Company': 'kakao enterprise'
}
res = requests.put('https://objectstorage.kr-central-2.kakaocloud.com/v1/{ACCOUNT}/{BUCKET_NAME}/{FOLDER_NAME}/', headers=headers)
createFolder()변수 설명 ACCOUNT 프로젝트 ID
- 토큰 발급 시 확인 가능
- Response Body의 token > project > id 값FOLDER_NAME 생성할 폴더 이름 -
코드 실행 후 카카오클라우드 콘솔 > Object Storage 서비스에서 버킷을 선택합니다. [객체] 탭에서 생성된 폴더를 확인할 수 있습니다.
Step 2. 이미지 파일 업로드하기
-
생성된 폴더 안에 파일을 업로드하는 API 호출 코드를 작성합니다. Object Storage에 이미지 파일을 업로드하기 위해 로컬 환경에
jpeg
파일을 준비합니다.파일 업로드 API 호출import requests
def uploadFile():
headers = {
'X-Auth-Token': '{X_AUTH_TOKEN}',
'Content-Type': 'image/jpeg'
}
data = open('{FILE_PATH}', 'rb')
res = requests.put('https://objectstorage.kr-central-2.kakaocloud.com/v1/{ACCOUNT}/{BUCKET_NAME}/{FOLDER_NAME}/{FILE_NAME}', headers=headers, data=data)
data.close()
uploadFile()변수 설명 FILE_PATH 파일이 위치한 경로 (이번 실습에서는 jpeg 파일이 위치한 경로) FILE_NAME 생성(업로드)할 파일 이름 -
코드 실행 후 카카오클라우드 콘솔 > Object Storage 서비스에서 버킷을 클릭하고, [객체] 탭을 확인하면 Step 1에서 생성한 폴더 안에
test.jpeg
파일이 업로드된 것을 확인할 수 있습니다. -
업로드된 이미지의 파일 정보에서 위치 URL을 복사한 후, 해당 URL로 이동하면 성공적으로 이미지 파일에 접근 가능합니다.