본문으로 건너뛰기

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