본문으로 건너뛰기

Object Storage API로 이미지 업로드

Python 코드로 Object Storage API를 호출해 Object Storage의 버킷과 오브젝트를 관리하는 예제를 제공합니다.

기본 정보
  • 예상 소요 시간: 20분
  • 권장 운영 체제: macOS, Ubuntu
  • 사전 준비 사항

시나리오 소개​

이 시나리오에서는 카카오클라우드 Object Storage API를 활용해 Python 코드로 이미지를 업로드하는 과정을 설명합니다. IAM 액세스 키와 인증 토큰을 발급받아 API를 호출하고, 버킷 생성부터 폴더 생성, 이미지 업로드까지 단계별로 자동화할 수 있는 코드 기반 접근 방식을 다룹니다.

주요 내용은 다음과 같습니다.

  • 인증 정보 발급(IAM 액세스 키 및 API 인증 토큰) 및 API 호출 환경 준비
  • Python 코드로 Object Storage에 버킷·폴더 생성 및 이미지 업로드
  • 업로드된 이미지 접근을 위한 권한 설정 및 결과 확인

시작하기 전에​

IAM 액세스 키 발급​

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. 버킷 생성​

  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)
    print(res.status_code)

    createFolder()
    변수설명
    ACCOUNT프로젝트 ID
    - 토큰 발급 시 확인하며, Response Body의 token > project > id 값
    - 또는 카카오클라우드 콘솔 > 홈 화면 상단의 회색 박스 영역에서 확인
    FOLDER_NAME생성할 폴더 이름
    폴더 생성 요청에 대한 응답 Status Code 정보​
    HTTP Status응답 내용설명
    201Created성공
    401Unauthorized권한 없음
    404Not found버킷을 찾을 수 없음
  2. 코드 실행 후 카카오클라우드 콘솔 > Object Storage 서비스에서 버킷을 선택합니다. [객체] 탭에서 생성된 폴더를 확인할 수 있습니다.

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()
    print(res.status_code)

    uploadFile()
    변수설명
    FILE_PATH파일이 위치한 경로 (이번 실습에서는 jpeg 파일이 위치한 경로)
    FILE_NAME생성(업로드)할 파일 이름
    파일 업로드 요청에 대한 응답 Status Code 정보​
    HTTP Status응답 내용설명
    201Created성공
    401Unauthorized권한 없음
    404Not found버킷을 찾을 수 없음
  2. 코드 실행 후 카카오클라우드 콘솔 > Object Storage 서비스에서 버킷을 클릭하고, [객체] 탭을 확인하면 Step 1에서 생성한 폴더 안에 test.jpeg 파일이 업로드된 것을 확인할 수 있습니다.

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

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