Sử dụng Swift Rest API

Để sử dụng Swift Rest API, bạn cần có ít nhất 1 Swift user. Để tạo swift user, tham khảo thêm tại Khởi tạo Swift user. Bạn có thể sử dụng Swif user này để tạo (hoặc xóa) nhiều container, container như một đơn vị lưu trữ (giống như một thư mục), trong mỗi container khách hàng có thể upload, get, delete nhiều object tương ứng (object ở đây được hiểu như một file, hoặc một folder con trong container).

Quy trình cơ bản: Xác thực -> Tạo container -> Upload Object

Bên dưới là danh sách các Swift rest API mà chúng tôi cung cấp và hướng dẫn thao tác với POSTMAN hoặc CURL

1. Get token

Thông tin cần cung cấp: 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}" } } } }

Kết quả trả về cần lưu ý những thông tin sau:

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. Tạo mới một container

Url

/v1/{account}/{container_name}

Method

PUT

Header

X-Auth-Token

Body

(Không bắt buộc)

  • Trong đó :

+ 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ư @, #, $, %, ^, &, *, ., /, \, {, }, [, ], |, ), ( …

Lưu ý:

Chú ý:

  • Một số client tools sẽ lỗi nếu tên container chứa các ký tự đặc biệt trên.

  • Để làm việc với các containers (buckets) dùng giao thức S3, thì tên các containers này phải chứa các ký tự thường và số, không chứa ký tự in hoa, không chứa ký tự đặc biệt, không chứa khoảng trắng.

  • Nếu request trả về mã code 201 thì bạn đã tạo thành công một container (trong ví dụ trên container được tạo thành công với tên "container_name").

  • Trong mỗi container bạn có thể upload nhiều object để lưu trữ (Object ở đây ví dụ như hình ảnh, file bất kì hoặc thư mục).

Tạo container dùng CURL thông qua 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. Tải lên 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.

Tải lên object dùng CURL thông qua 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. Tải lên object lớn (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.

Tải lên object lớn dùng CURL thông qua 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:

  • Ví dụ:

    • 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. Lấy 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.

Lấy object dùng CURL thông qua 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. Lấy object lớn

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.

Lấy object lớn dùng CURL thông qua 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. Xóa object lớn

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.

Xóa object lớn dùng CURL thông qua 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. Xóa 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.

Xóa object dùng CURL thông qua 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. Sao chép 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

Lấy object dùng CURL thông qua 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. Xó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.

Xóa container dùng CURL thông qua 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. Đổi tên 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 object dùng CURL thông qua 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. Liệt kê các container của một tài khoản

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 containers dùng CURL thông qua 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. Liệt kê nội dung của một 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 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

14. Lấy tempURL của một 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

Tạo tempurl dùng 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. Tạo thư mục mới ở một container cụ thể

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.

Tạo thư mục mới dùng CURL thông qua 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