본문으로 건너뛰기

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 인증 토큰은 카카오클라우드 계정 아이디와 비밀번호를 대신하는 토큰으로, API 인증 토큰을 사용하여 CLI나 API를 통해서 애플리케이션이나 서비스를 인증할 수 있습니다. 액세스 키 발급 후, 액세스 키 ID와 보안 액세스 키를 이용해 API 인증 토큰을 발급할 수 있습니다.

API 사용 준비 문서를 참고하여 API 인증 토큰을 발급하시기 바랍니다.

안내

기본적으로 API 인증 토큰은 12시간 이후 만료되며, 상황에 따라 12시간 이내라도 변경되거나 만료될 수 있습니다.

파이썬 requests 모듈 설치하기

pip 명령어를 통해 파이썬 requests 모듈을 설치합니다. requests 모듈은 파이썬에서 간단한 HTTP 요청을 처리하기 위해 사용합니다.

pip install requests

API 호출로 버킷 관리

안내

이번 가이드에서는 파이썬으로 API 호출 코드를 작성합니다. 파이썬 파일(.py)을 생성해 해당 파일에서 작업을 진행해주시기 바랍니다.

Step 1. 버킷 생성하기

  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_TOKENAPI 인증 토큰
    BUCKET_NAME생성할 버킷 이름
  2. 실행 결과로 HTTP 요청에 대한 Status code가 출력됩니다. Status 값을 통해 요청 실행 결과를 확인할 수 있습니다.

    버킷 생성 요청에 대한 응답 Status Code 정보
    HTTP Status응답 내용설명
    201     OK Bucket성공
    401Unauthorized권한 없음
    409Conflicts생성 실패
    - 동일한 bucket_name 이미 존재
  3. 카카오클라우드 콘솔 > Object Storage 서비스의 버킷 목록에서 생성된 버킷을 확인할 수 있습니다.

Step 2. 버킷 접근 관리하기

  1. 버킷에 대한 접근을 관리하는 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()
  2. 실행 결과로 HTTP 요청에 대한 응답 Status code가 출력됩니다. Status 값을 통해 요청 실행 결과를 확인할 수 있습니다.

    버킷 접근 관리 요청에 대한 응답 Status Code 정보
    HTTP Status응답 내용설명
    200OK Bucket성공
    401Unauthorized권한 없음
    404Not found버킷 찾을 수 없음

API 호출로 오브젝트(File & Folder) 관리

Step 1. 폴더 생성하기

  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()
    변수설명
    ACCOUNTProject ID
    - 토큰 발급 시 확인 가능
    - Response Body의 token > project > id 값
    FOLDER_NAME생성할 폴더 이름
  2. 코드 실행 후 카카오클라우드 콘솔 > Object Storage 서비스에서 버킷을 선택합니다. [객체] 탭에서 생성된 폴더를 확인할 수 있습니다.

    OSAPI 이미지업로드_폴더 생성 확인.png

Step 2. 이미지 파일 업로드하기

  1. 생성된 폴더 안에 파일을 업로드하는 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생성(업로드)할 파일 이름
  2. 코드 실행 후 카카오클라우드 콘솔 > Object Storage 서비스에서 버킷을 클릭하고, [객체] 탭을 확인하면 Step 1에서 생성한 폴더 안에 test.jpeg 파일이 업로드된 것을 확인할 수 있습니다.

  3. 업로드된 이미지의 파일 정보에서 위치 URL을 복사한 후, 해당 URL로 이동하면 성공적으로 이미지 파일에 접근 가능합니다.