Using Swift REST API

To use Swift Rest API, you need at least 1 Swift user. To create a Swift user, please refer to Initializing Swift user. You can use this Swift user to create (or delete) multiple containers, where each container serves as a storage unit (similar to a folder). In each container, users can upload, get, and delete multiple corresponding objects (objects here are understood as files or subfolders within the container).

Basic process: Authentication -> Create Container -> Upload Object

Below is a list of Swift Rest APIs that we provide, along with instructions on how to operate with POSTMAN or CURL.

1. Get token

Input: username, password, projectId, authentication url

Url/auth/tokens

Method

POST

Header

Content-Type: application/json

Body

{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "default" }, "name": "{username}", "password": "{password}" } } }, "scope": { "project": { "domain": { "name": "default" }, "id": "{projectId}" } } } }

Output:

Response trả về

"url: https://vos-ss-lab-hcm-sw.vinadata.vn/v1/AUTH_d6f0078021f4417989d6ba8ae4320dea" với public interface trong catalog có type "object-store", đây là link dùng cho những request sau này. Trong đó, " AUTH_d6f0078021f4417989d6ba8ae4320dea" tương ứng với một account trong object storage.

Header trả về

"x-subject-token: gAAAAABdAhsbpeT0CLQiUvTgX3TcVua8c7RLFIY074FlLvDWpGp06EV8SRCbuLGzSL5Q2AnfYogSWydNeZc5dWpRbTKxiwGXuP-wAoPPmIGvBctSkkwnhMF8UQXLBmwlIT43Mudc9ZuHgRLqlW1BT3OmhN9ugKTQHyzgCuzBmHqVgtXp6dRJYr0", đây là thông tin token dùng để xác thực cho những request sau.

Chú ý:

  • Token luôn có expired, nếu hết expired vui lòng get token mới

Get token dùng CURL thông qua RESTful API

curl -i -X POST -H 'Content-Type: application/json; charset=utf-8' <authentication_url>/v3/auth/tokens -d <auth_body>

curl -i -X POST "https://sw-auth-1.vinadata.vn/v3/auth/tokens" \

-H 'Content-Type: application/json; charset=utf-8' \

-d $'{

"auth": {

"scope": {

"project": {

"id": "6e89e27c18824e70b84a02487a93c69f",

"domain": {

"name": "default"

}

}

},

"identity": {

"methods": [

"password"

],

"password": {

"user": {

"name": "${username}",

"password": "${password},

"domain": {

"name": "default"

}

}

}

}

}

}'

2. Create a container

Url/v1/{account}/{container_name}

Method

PUT

Header

X-Auth-Token

Body

(Không bắt buộc)

  • In which :

+ Value của header "X-Auth-Token" chính là value của "x-subject-token" được lấy từ mục 3.1 (Get Token).

+ "container_name" là tên của container, bạn có thể đặt tùy ý. Tuy nhiên để tương thích với tất cả các client tools cũng như tránh các lỗi liên quan đến việc xử lý ký tự đặc biệt hoặc unicode thì tên container chỉ nên chứa các ký tự (a-z, A-Z) hoặc số (0-9). Tên container không nên chứa các ký tự đặc biệt như @, #, $, %, ^, &, *, ., /, \, {, }, [, ], |, ), ( …

Warning:

  • Some client tools may encounter errors if the container name contains special characters.

  • When working with containers (buckets) using the S3 protocol, the names of these containers must contain lowercase letters and numbers, without uppercase letters, special characters, or spaces.

  • If the request returns a status code of 201, you have successfully created a container (in the example above, the container is successfully created with the name 'container_name').

  • Within each container, you can upload multiple objects for storage (objects here could be, for example, images, any files, or folders).

Create a container using CURL through RESTful API

curl -i -X PUT -H "X-Auth-Token: <token>" <storage url>/mycontainer

curl -v -i -X PUT -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/new_container

3. Upload an object (object size < 5GB)

Url/v1/{account}/{container}/{name_object}

Method

PUT

Header

X-Auth-Token

Token được lấy từ "x-subject-token"

Content-Type

Chọn content-type phù hợp với object upload (Ví dụ: Content-Type: image/jpeg với file hình có định dạng jpg).

Body

Binary file: choose file

Ví dụ cụ thể:

Url

fileName.png là tên của object, object này sẽ được lưu trong container "nameContainer"

Method

PUT

Header

X-Auth-Token: gAAAAABdAhsbpeT0CLQiUvTgX3TcVua8c7RLFIY074FlLvDWpGp06EV8SRCbuLGzSL5Q2AnfYogSWydNeZc5dWpRbTKxiwGXuP-wAoPPmIGvBctSkkwnhMF8UQXLBmwlIT43Mudc9ZuHgRLqlW1BT3OmhN9ugKTQHyzgCuzBmHqVgtXp6dRJYr0

Content-Type: image/png

Với hình ảnh có định dạng file png tương ứng Content-Type: image/png

Body

Binary file: choose file

Ví dụ trong postman: chọn body binary, rồi chọn file tương ứng với máy tính local.

Upload an object using CURL through RESTful API

curl -i -T myobject -X PUT -H "X-Auth-Token: <token>" <storage url>/mycontainer/myobject

curl -v -i --data-binary 50GB -X PUT -H "Content-Type:application/octet-stream" -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt

4. Upload large object (object size > 5GB)

Url/v1/{account}/{container}/{name_object}/{segment_object_name}

Method

POST

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "container" là tên container.

+ "name_object" tên của object muốn lấy nằm trong container.

Upload an object using CURL through RESTful API

Với các object có kích thước lớn (kích thước > 5GB) thì vStorage không hỗ trợ upload theo flow bình thường. Để có thể tải lên được những object này, cần phải thực hiện các bước sau:

  • Bước 1: Tạo segments container

vStorage dùng container segments để lưu trữ danh sách tất cả các segment objects của mỗi large object. Do đó, trước khi upload một large cần phải tạo container nếu nó chưa tồn tại, nếu nó đã tồn tại trước đó, không cần phải tạo lại thêm lần nữa.

Tên container này có pattern <container_segments>

Ví dụ: container bạn muốn lưu trữ large object có tên là: <mycontainer> thì segments container của nó sẽ có tên là <mycontainer_segments>.

Để tạo container, vui lòng tham chiếu đến mục <Create container>

  • Bước 2: Chia một large object thành những phần nhỏ hơn (segment a large object into segment objects)

Việc chia một large object thành những phần riêng biệt có thể dùng command line, client tool hoặc library.

Ví dụ: Upload object myobject (10 GB), segment object myobject này các segment objects:

    • 00000001 (2GB)

    • 00000002 (2GB)

    • 00000003 (2GB)

    • 00000004 (2GB)

    • 00000005 (2GB)

  • Bước 3: Upload các phần này lên vStorage dùng RESTful API (uploads the segment objects using RESTful API)

Việc upload các segment objects như upload các small objects dùng Postman, CURL hay bất kỳ client tool, library nào hỗ trợ upload file thông qua HTTP. Sau khi upload từng segment object lên vStorage, response trả về sẽ gồm giá trị Etag, giá trị này được dùng tạo nội dung Json cho manifest.

Ví dụ: Upload các segment objects của Object myobject dùng CURL:

curl -X PUT -H 'X-Auth-Token: <token>'

http://<storage_url>/container/myobject/00000001 --data-binary '00000001'

=> ETAG: etagoftheobjectsegment1

curl -X PUT -H 'X-Auth-Token: <token>' http://<storage_url>/container/myobject/00000002 --data-binary '00000002'

=> ETAG: etagoftheobjectsegment2

curl -X PUT -H 'X-Auth-Token: <token>' http://<storage_url>/container/myobject/00000003 --data-binary '00000003'

=> ETAG: etagoftheobjectsegment3

curl -X PUT -H 'X-Auth-Token: <token>' http://<storage_url>/container/myobject/00000004 --data-binary '00000004'

=> ETAG: etagoftheobjectsegment4

curl -X PUT -H 'X-Auth-Token: <token>' http://<storage_url>/container/myobject/00000005 --data-binary '00000005'

=> ETAG: etagoftheobjectsegment5

  • Bước 4: Tạo nội dung Json cho manifest (build manifest content)

Nội dung của manifest là một chuỗi Json với các keys sau:

Key

Description

path

Đường dẫn lưu trữ của segment (the path to the segment object (not including account) /container/object_name)

etag

Giá trị checksum của segment object, được trả về sau khi upload thành công 1 segment object lên vStorage (the ETag given back when the segment object was PUT)

size_bytes

Kích thước của mỗi segment object với đơn vị bytes (the size of the complete segment object in bytes)

Ví dụ: Tạo nội dung Json cho manifest cho object myobject:

[{"path": "/container/myobject/00000001", "etag": "etagoftheobjectsegment1", "size_bytes": 2000000000}, {"path": /container/myobject/00000001", "etag": "etagoftheobjectsegment2", "size_bytes": 2000000000},{"path": /container/myobject/00000003", "etag": "etagoftheobjectsegment3", "size_bytes": 2000000000},{"path": /container/myobject/00000004", "etag": "etagoftheobjectsegment4", "size_bytes": 2000000000},{"path": /container/myobject/00000005", "etag": "etagoftheobjectsegment5", "size_bytes": 2000000000}]

  • Bước 5: Upload nội dung Json của manifest lên vStorage (upload the manifest content in Json form)

Việc upload nội dung manifest như upload bất kỳ một textjson content nào khác lên vStorage dùng Postman, CURL hay bất kỳ client tool, library.

curl -i -X PUT -H "X-Auth-Token: ${<token>}" ${<storage url>}/mybigfilescontainer/file?multipart-manifest=put -d '[{"path": "/container/myobject/00000001", "etag": "etagoftheobjectsegment1", "size_bytes": 2000000000}, {"path": /container/myobject/00000001", "etag": "etagoftheobjectsegment2", "size_bytes": 2000000000},{"path": /container/myobject/00000003", "etag": "etagoftheobjectsegment3", "size_bytes": 2000000000},{"path": /container/myobject/00000004", "etag": "etagoftheobjectsegment4", "size_bytes": 2000000000},{"path": /container/myobject/00000005", "etag": "etagoftheobjectsegment5", "size_bytes": 2000000000}]'

Ví dụ thực tế về upload một large object:

Upload một large object có kích thước là 10 GB với đường dẫn sau </home/hientt5/large_file/largefile> đến container <mybigfilecontainer>

  • Bước 1: Tạo segments container

curl -i -X PUT -H "x-auth-token: ${<token>}" ${<storage url>}/mybigfilescontainer_segments

  • Bước 2: Chia </home/hientt5/large_file/largefile> thành nhiều segment objects dùng command line split

split -b 40000 /home/hientt5/large_file/largefile

Lệnh split sẽ segment file </home/hientt5/large_file/largefile> thành những segment objects sau:

-rw-r--r-- 1 ron ron 100000000 apr 24 18:21 file

-rw-r--r-- 1 ron ron 40000000 apr 24 18:39 xaa

-rw-r--r-- 1 ron ron 40000000 apr 24 18:39 xab

-rw-r--r-- 1 ron ron 20000000 apr 24 18:39 xac

  • Bước 3: Upload những segment objects trên lên vStorage

curl -i -X PUT -H "x-auth-token: ${<token>}" ${<storage url>}/mybigfilescontainer_segments/xaa --data-binary @xaa

=> ETAG: 48e9a108a3ec623652e7988af2f88867

curl -i -X PUT -H "x-auth-token: ${<token>}" ${<storage url>}/mybigfilescontainer_segments/xab --data-binary @xab

=> ETAG: 48e9a108a3ec623652e7988af2f88867

curl -i -X PUT -H "x-auth-token: ${<token>}" ${<storage url>}/mybigfilescontainer_segments/xac --data-binary @xac

=> ETAG: 10e4462c9d0b08e7f0b304c4fbfeafa3

  • Bước 4: Tạo nội dung Json cho manifest

Tạo nội dung Json của manifest như sau:

[{"path":"/mybigfilescontainer_segments/xaa",

"etag":"48e9a108a3ec623652e7988af2f88867",

"size_bytes":4000000000},

{"path":"/mybigfilescontainer_segments/xab",

"etag":"48e9a108a3ec623652e7988af2f88867",

"size_bytes":4000000000},

{"path":"/mybigfilescontainer_segments/xac",

"etag":"10e4462c9d0b08e7f0b304c4fbfeafa3",

"size_bytes":2000000000}]

  • Bước 5: Upload nội dung Json của manifest lên vStorage

curl -i -X PUT -H "X-Auth-Token: ${<token>}" ${<storage url>}/mybigfilescontainer/file?multipart-manifest=put -d '[{"path":"/mybigfilescontainer_segments/xaa",

"etag":"48e9a108a3ec623652e7988af2f88867",

"size_bytes":4000000000},

{"path":"/mybigfilescontainer_segments/xab",

"etag":"48e9a108a3ec623652e7988af2f88867",

"size_bytes":4000000000},

{"path":"/mybigfilescontainer_segments/xac",

"etag":"10e4462c9d0b08e7f0b304c4fbfeafa3",

"size_bytes":2000000000}]'

  • Upload large object dùng Swift client tool

Việc upload một large object dùng Swift client tool rất đơn giản, về cơ bản, client tool này sẽ hỗ trợ tất cả các bước trên, người dùng chỉ cần truyền vào thông tin token để chứng thực, đường dẫn large object và kích thước của từng segment object.

Ví dụ: swift --os-auth-url https://api.example.com/v3 --auth-version 3\

--os-project-name project1 --os-project-domain-name domain1 \

--os-username user --os-user-domain-name domain1 \

--os-password password upload test_container -S 1073741824 large_file

5. Download an object

Url/v1/{account}/{container}/{name_object}

Method

Get

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "container" là tên container.

+ "name_object" tên của object muốn lấy nằm trong container.

Download an object using CURL through RESTful API

curl -i -X GET -H "X-Auth-Token: <token>" <storage url>/mycontainer/myobject

curl -v -i -X GET -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt

6. Download a large object

Url/v1/{account}/{container}/{name_object}

Method

Get

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "container" là tên container.

+ "name_object" tên của object muốn lấy nằm trong container.

Upload an object using CURL through RESTful API

curl -i -X GET -H "X-Auth-Token: <token>" <storage url>/mycontainer/myobject?multipart-manifest=get

curl -v -i -X GET -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt?multipart-manifest=get

7. Delete a large object

Url/v1/{account}/{container}/{name_object}?multipart-manifest=delete

Method

Delete

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "container" là tên container.

+ "name_object" tên của object muốn lấy nằm trong container.

Delete a large object using CURL through RESTful API

curl -i -X DELETE -H "X-Auth-Token: <token>" <storage url>/mycontainer/myobject?multipart-manifest=delete

curl -v -i -X GET -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt?multipart-manifest=delete

8. Delete an object

Url/v1/{account}/{container}/{name_object}

Method

Delete

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "container" là tên container.

+ "name_object" tên của object muốn xóa nằm trong container.

Delete an object using CURL through RESTful API

curl -i -X DELETE -H "X-Auth-Token: <token>" <storage url>/mycontainer/myobject

curl -v -i -X DELETE -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt

9. Copy an object

Url/v1/{account}/{container}/{name_object}

Method

COPY

Header

X-Auth-Token

Destination

{dest_container}/{name_object}

Body

(Optional)

  • Trong đó:

+ "container" là tên container.

+ "name_object" tên của object muốn copy nằm trong container.

+ “dest_container” tên của destination container

Copy an object using CURL through RESTful API

curl -i -X COPY -H "X-Auth-Token: <token>" -H "Destination: anothercontainer/myobject" <storage url>/mycontainer/myobject

curl -v -i -X COPY -H "Destination: lifecycle/test.txt" -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt

10. Delete a container

Url/v1/{account}/{container}

Method

Delete

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "container" là tên container cần được xóa.

Delete a container using CURL through RESTful API

curl -s -S -X DELETE -H "X-Auth-Token: <token>" <storage url>/mycontainer

curl -v -i -X DELETE -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle

11. Rename an object

Url/v1/{account}/{container}/{name_object}

Method

COPY and DELETE

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "container" là tên container chứa đối tượng cần rename.

+ “name_object” là tên của đối tượng cần được rename.

  • Để rename một object, cần thực hiện hai bước sau:

+ Copy object đó với tên mới

+ Xóa object cũ

Rename an object using CURL through RESTful API

curl -i -X COPY -H "X-Auth-Token: <token>" -H "Destination: anothercontainer/new_myobject" <storage url>/mycontainer/myobject

curl -i -X DELETE -H "X-Auth-Token: <token>" <storage url>/mycontainer/myobject

curl -v -i -X COPY -H "Destination: lifecycle/new_test.txt" -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt

curl -v -i -X DELETE -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle/test.txt

12. List all containers

Url/v1/{account}

Method

GET

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "account" là tên hoặc ID của account cần liệt kê danh sách containers.

List all container using CURL through RESTful API

curl -s -S -X GET -H "X-Auth-Token: <token>" <storage url>

curl -v -i -X GET -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399

13. List content of a container

Url/v1/{account}/{container}

Method

GET

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "account" là tên hoặc ID của account cần liệt kê danh sách containers.

+ "container" là tên của container cần liệt kê nội dung.

List contents of a container using CURL through RESTful API

curl -s -S -X GET -H "X-Auth-Token: <token>" <storage url>/mycontainer

curl -v -i -X GET -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle

14. Get tempURL of an object

Url/v1/{account}/{container}/{name_object}

Method

GET

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "account" là tên hoặc ID của account cần liệt kê danh sách containers.

+ "container" là tên của container cần liệt kê nội dung.

+ “name_object” là tên đối tượng cần tạo tempurl.

  • Để tạo một tempurl của một object, cần thực hiện các bước sau:

+ Lấy về secret key của container chứa object đó.

+ Tạo tempurl dựa trên secret key đó.

Get secret key từ giá trị của field _X-Account-Meta-Temp-URL-Key_** của meta-data của container dùng CURL thông qua RESTful API**

curl -s -S -X GET -H "X-Auth-Token: <token>" <storage url>/mycontainer

curl -v -i -X GET -H "X-Auth-Token: gAAAAABdQQ8uIM6CWmA85hKi6MtOvuGP1qok8OJzp0-h74QAn9ptncjT16sg0pxxilUSCPgFeb9NKpNfmkD9kDLYRAPkymOB9wlNWNTkiz20m2uZpCeTIDUpPMO110rSXBMaE8Gszq9BLiKFyuHVmTEKeyoQ3qEFxitXilEwIg201IRtbJFiCa0" \

https://<vStorage endpoint>/v1/AUTH_a5bf65ca71594d85a60dc73cf9fc8399/test_lifecycle

Get tempurl use script sau

#!/bin/bash

seconds=<number of seconds until url expires>

method=GET

expires=$(( $(date '+%s') + $seconds ))

path='<container>/<object>'

fullpath=`echo $OS_STORAGE_URL | sed 's/http.*\/v1/\/v1/'`"/"$path

key=${secret_key}

sig=`printf '%s\n%s\n%s' $method $expires $fullpath | openssl sha1 -hmac $key | awk '{print $2}'`

# print the URL

echo "${OS_STORAGE_URL}/${path}?temp_url_sig=${sig}&temp_url_expires=$

{expires}"

15. Create a folder

Url/v1/{account}/{container}/{new_folder}

Method

PUT

Header

X-Auth-Token

Body

(Optional)

  • Trong đó:

+ "account" là tên hoặc ID của account cần liệt kê danh sách containers.

+ "container" là tên của container cần liệt kê nội dung.

+ “new_folder” là tên của thư mục mới cần tạo.

Create a folder using CURL through RESTful API

curl -s -S -X PUT -H "X-Auth-Token: <token>" -H “Content-Length: 0” -H “Content-Type: application/directory” <storage url>/mycontainer/newfolder

curl -X PUT -i https://<vStorage endpoint>/v1/AUTH_f0a1d142185e4f8dae22ae67764d099b/syncdata1/newfolder/ -H "Content-Length:0" -H "Content-Type:application/directory" -H "X-Auth-Token: gAAAAABfKhbKq-9EVUhbSjPMJEMiPh7yJ0fXCZ33__J1dIQJaN58UPWKg96mAx9VGp3X7H-LyJhT0S5bN4dqKOCPERRQ8zw2Mo0zVRxlOG861vEWGKR1vkMbykAWTETa8cMnrXK6W2LYXkCpefJw75Q62UDIt1dmjT7WidpnICowW26FKp7B9WM"

Last updated