본문으로 건너뛰기

Object Storage - cURL

cURL 설치 및 기본 사용 가이드

cURL은 “Client URL”의 약자로, 명령줄 또는 스크립트에서 URL 구문을 통해 데이터를 전송하고 수신할 수 있는 오픈소스 커맨드라인 도구이자 라이브러리입니다.

  • HTTP, HTTPS, FTP, SFTP, SCP 등 다양한 프로토콜을 지원
  • GET, POST, PUT, DELETE 등 HTTP 메서드 요청 가능
  • 헤더, 바디, 쿠키, 인증 등 요청 커스터마이징 가능
  • 자동화 스크립트, API 테스트, 네트워크 상태 확인, 파일 업로드/다운로드 등에 활용

해당 메뉴얼은 AWS S3에서 제공하는 cURL를 이용하여 Object Storage를 사용하는 방법을 설명합니다.

오브젝트 스토리지 API 인증키

인증키 확인 가이드

오브젝트스토리지 API 인증키는 아래 가이드를 통해 참고하여 확인하시기 바랍니다.
오브젝트 스토리지 API 인증키 가이드

API 용어

  • Endpoint : 오브젝트 스토리지 인증키 관리 ➡️ API Endpoint
  • User_Id : 오브젝트 스토리지 인증키 관리 ➡️ User ID
  • Access_Key : 오브젝트 스토리지 인증키 관리 ➡️ Access Key ID
  • Secret_Key : 오브젝트 스토리지 인증키 관리 ➡️ Secret Key ID
  • Token : [토큰 키 생성]으로 생성된 X-Auth-Token 값

cURL 사용하기

토큰 키 생성

curl -i -g -X GET "Endpoint/auth/" -H "X-Auth-User: User_id:Access_key" -H "X-Auth-Key: Secret_key"

# curl -i -g -X GET "Endpoint/auth/" -H "X-Auth-User: User_id:Access_key" -H "X-Auth-Key: Secret_key" 

HTTP/1.1 204 No Content
X-Storage-Url: http://[endpoint]]/swift/v1/[AUTH_iwinvauthtest]
X-Storage-Token: AUTH_rgwtk55000000356236383861316161386538613564376436303465323830366339613261626162363466336663663733616463366430363135316134376331663831373232343a4b494d5a304b52514439553239375146374248333a5799f31657becf4e75e85e7a8d6103960f10dee2c3365b6cd357a03fc1a87acd3ec766
X-Auth-Token: AUTH_rgwtk55000000356236383861316161386538613564376436303465323830366339613261626162363466336663663733616463366430363135316134376331663831373232343a4b494d5a304b52514439553239375146374248333a5799f31657becf4e75e85e7a8d6103960f10dee2c3365b6cd357a03fc1a87acd3ec766
X-Trans-Id: tx000000000000000007bda-005ee723ce-1461cdd-default
X-Openstack-Request-Id: tx000000000000000007bda-005ee723ce-1461cdd-default
Content-Type: application/json; charset=utf-8
Date: Mon, 15 Jun 2020 07:31:26 GMT

버킷 관리

버킷 생성

curl -i -X PUT Endpoint/swift/v1/User_Id/Bukcet_Name -H "X-Auth-Token: Token"

# curl -i -X PUT Endpoint/swift/v1/User_Id/Bukcet_Name -H "X-Auth-Token: Token"

HTTP/1.1 201 Created
Content-Length: 0
X-Trans-Id: tx000000000000000008528-005ee82787-1461cdd-default
X-Openstack-Request-Id: tx000000000000000008528-005ee82787-1461cdd-default
Accept-Ranges: bytes
Content-Type: text/plain; charset=utf-8
Date: Tue, 16 Jun 2020 01:59:35 GMT

버킷 삭제

curl -i -X DELETE Endpoint/swift/v1/User_Id/Bucket_Name -H "X-Auth-Token: Token"

# curl -i -X DELETE Endpoint/swift/v1/User_Id/Bucket_Name -H "X-Auth-Token: Token"

HTTP/1.1 204 No Content
X-Trans-Id: tx000000000000000008529-005ee82857-1461cdd-default
X-Openstack-Request-Id: tx000000000000000008529-005ee82857-1461cdd-default
Accept-Ranges: bytes
Content-Type: text/plain; charset=utf-8
Date: Tue, 16 Jun 2020 02:03:03 GMT

버킷 리스트 확인

curl -i -X GET Endpoint/swift/v1/User_Id/ -H "X-Auth-Token: Token"

# curl -i -X GET Endpoint/swift/v1/User_Id/ -H "X-Auth-Token: Token"

HTTP/1.1 200 OK
X-Timestamp: 1592273237.04130
X-Account-Container-Count: 2
X-Account-Object-Count: 0
X-Account-Bytes-Used: 0
X-Account-Bytes-Used-Actual: 0
X-Account-Storage-Policy-Default-Placement-Container-Count: 2
X-Account-Storage-Policy-Default-Placement-Object-Count: 0
X-Account-Storage-Policy-Default-Placement-Bytes-Used: 0
X-Account-Storage-Policy-Default-Placement-Bytes-Used-Actual: 0
X-Account-Storage-Policy-Temporary-Container-Count: 0
X-Account-Storage-Policy-Temporary-Object-Count: 0
X-Account-Storage-Policy-Temporary-Bytes-Used: 0
X-Account-Storage-Policy-Temporary-Bytes-Used-Actual: 0
Accept-Ranges: bytes
X-Trans-Id: tx00000000000000000853b-005ee82955-1461cdd-default
X-Openstack-Request-Id: tx00000000000000000853b-005ee82955-1461cdd-default
Content-Type: text/plain; charset=utf-8
Content-Length: 12
Date: Tue, 16 Jun 2020 02:07:17 GMT

iwinv
iwinv2

오브젝트 관리

오브젝트 업로드

curl -i -X PUT -T Object_Name Endpoint/swift/v1/User_Id/Bucket_Name/ -H "X-Auth-Token: Token"

# curl -i -X PUT -T Object_Name Endpoint/swift/v1/User_Id/Bucket_Name/ -H "X-Auth-Token: Token"

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0HTTP/1.1 100 CONTINUE

100 5 0 0 100 5 0 24 --:--:-- --:--:-- --:--:-- 24HTTP/1.1 201 Created
etag: d8e8fca2dc0f896fd7cb4cb0031ba249
Last-Modified: Tue, 16 Jun 2020 06:15:28 GMT
X-Trans-Id: tx000000000000000000033-005ee86380-150fda5-default
X-Openstack-Request-Id: tx000000000000000000033-005ee86380-150fda5-default
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Date: Tue, 16 Jun 2020 06:15:28 GMT

100 5 0 0 100 5 0 20 --:--:-- --:--:-- --:--:-- 20

오브젝트 다운로드

curl -s -S -X GET Endpoint/swift/v1/User_Id/Bucket_Name/Object_Name "X-Auth-Token: Token" -o File_Name

# curl -s -S -X GET Endpoint/swift/v1/User_Id/Bucket_Name/Object_Name "X-Auth-Token: Token" -o File_Name

오브젝트 리스트 확인

curl -i -X GET Endpoint/swift/v1/User_Id/Bucket_Name -H "X-Auth-Token: Token"

# curl -i -X GET Endpoint/swift/v1/User_Id/Bucket_Name -H "X-Auth-Token: Token"

HTTP/1.1 200 OK
X-Timestamp: 1592273237.04130
X-Account-Container-Count: 2
X-Account-Object-Count: 0
X-Account-Bytes-Used: 0
X-Account-Bytes-Used-Actual: 0
X-Account-Storage-Policy-Default-Placement-Container-Count: 2
X-Account-Storage-Policy-Default-Placement-Object-Count: 0
X-Account-Storage-Policy-Default-Placement-Bytes-Used: 0
X-Account-Storage-Policy-Default-Placement-Bytes-Used-Actual: 0
X-Account-Storage-Policy-Temporary-Container-Count: 0
X-Account-Storage-Policy-Temporary-Object-Count: 0
X-Account-Storage-Policy-Temporary-Bytes-Used: 0
X-Account-Storage-Policy-Temporary-Bytes-Used-Actual: 0
Accept-Ranges: bytes
X-Trans-Id: tx00000000000000000853b-005ee82955-1461cdd-default
X-Openstack-Request-Id: tx00000000000000000853b-005ee82955-1461cdd-default
Content-Type: text/plain; charset=utf-8
Content-Length: 12
Date: Tue, 16 Jun 2020 02:07:17 GMT

test.txt
sample.jpg

오브젝트 삭제

curl -i -X DELETE Endpoint/swift/v1/User_Id/Bucket_Name/Object_Name -H "X-Auth-Token: Token"

# curl -i -X DELETE Endpoint/swift/v1/User_Id/Bucket_Name/Object_Name  -H "X-Auth-Token: Token" 

HTTP/1.1 204 No Content
X-Trans-Id: tx000000000000000008529-005ee82857-1461cdd-default
X-Openstack-Request-Id: tx000000000000000008529-005ee82857-1461cdd-default
Accept-Ranges: bytes
Content-Type: text/plain; charset=utf-8
Date: Tue, 16 Jun 2020 02:03:03 GMT