Using SwiftClient
Common usecase
Get token
swift auth
export OS_STORAGE_URL=https://hcm.vstorage.vnglab.com/v1/AUTH_afa7086fbef044938dbb7d8d328d452a
export OS_AUTH_TOKEN=gAAAAABjsYvUCXdVOkJo6EttO7WIVKrqnkbc2_nUU59RGBbzsOo4rbSra5RayTBtC_CJzosiJzZkOj77_nqLt-NcaShU47ggANr8dm9TGvHTY48mphfnZPRyAuFFEr4LiG7zNlJBkOxqbBPR7kDbJIpuVKTodupASxhQAYgaKP0s20zE4C77kC8
When using the SwiftClient tool, it's possible to omit exporting OS_STORAGE_URL and OS_AUTH_TOKEN. However, the request time will be longer because for each request or operation, a new token needs to be obtained. Therefore, it is recommended to export these variables for reuse multiple times.
Verify project(account)'s metadata information
swift stat
Account: AUTH_afa7086fbef044938dbb7d8d328d452a
Containers: 6
Objects: 4
Bytes: 24351437
Containers in policy "archive": 1
Objects in policy "archive": 0
Bytes in policy "archive": 0
Containers in policy "gold": 4
Objects in policy "gold": 4
Bytes in policy "gold": 24351437
Containers in policy "silver": 1
Objects in policy "silver": 0
Bytes in policy "silver": 0
Meta Quota-Bytes: 10000000
Meta Temp-Url-Key: tx71f555cc77df46afa6568-0063a286ee
Meta My-Custom-Metadata: abc
Vary: Accept
X-Vngcloud-Backend: 03/backend_hcm_vstorage_vnglab
X-Account-Project-Domain-Id: default
X-Timestamp: 1668228497.92635
Accept-Ranges: bytes
X-Trans-Id: tx1c351a6c5467473d8e823-0063b1a74c
X-Openstack-Request-Id: tx1c351a6c5467473d8e823-0063b1a74c
Server: vngcloud
Connection: keep-alive
Content-Type: text/plain; charset=utf-8
Key | Ý nghĩa |
Account | Account name |
Containers | Number of containers |
Objects | Number of objects |
Bytes | Bytes used in account |
Containers in policy "xxx" | Number of containers belong policy xxx |
Objects in policy "xxx" | Number objects belong policy xxx |
Bytes in policy "xxx" | Bytes used belong policy xxx |
Meta Quota-Bytes | quota của account |
Meta Temp-Url-Key | temp-url-key của account được dùng để tạo ra temp-url |
Meta My-Custom-Metadata | Một metadata tuỳ chọn do người dùng tự đặt |
Thiết lập metadata cho project (account)
swift post –m <key:value>
Xóa metadata cho project (account)
swift post -m <key:>
Thiết lập custom metadata (user metadata) cho project (account)
Swift post –m “my_custom_metadata:abc”
Liệt kê danh sách các container thuộc một project (account)
swift list
Tạo một container mới
swift post <container_name>
Xóa container
swift delete container
Truy xuất thông tin metadata của một container
swift stat my_container
\
Account: AUTH_afa7086fbef044938dbb7d8d328d452a
Container: my_container
Objects: 0
Bytes: 0
Read ACL:
Write ACL:
Sync To:
Sync Key:
Last-Modified: Sun, 01 Jan 2023 13:30:13 GMT
Accept-Ranges: bytes
Vary: Accept
Server: vngcloud
X-Storage-Policy: gold
Connection: keep-alive
X-Timestamp: 1672579812.82240
X-Trans-Id: tx0caa6b4d82d54f9c95548-0063b18b1a
X-Container-Sharding: False
Content-Type: text/plain; charset=utf-8
X-Openstack-Request-Id: tx0caa6b4d82d54f9c95548-0063b18b1a
X-Vngcloud-Backend: 03/backend_hcm_vstorage_vnglab
Thiết lập metadata cho container
swift post container -m <key:value>
Liệt kê danh sách các object của một container
swift list <container_name>
Upload object lên một container
swift upload <container_name> [--object-name <object-name>] <local_file_or_directory>
Upload một large object (multipart upload) lên một container
swift upload <container_name> <object_name> --segment-size <size>
swift upload container large_file --segment-size 50M
Download object từ một container
swift download <container_name> <object_name>
Xóa một object trong container
swift delete <container_name> <object_name>
Thiết lập metadata cho một object
swift post <container_name> <object_name> -m "<metadata>:<value>"
Xóa metadata của một object
swift post <container_name> <object_name> -m "<metadata>:"
Một số use case nâng cao
Tạo (generate) tempURL link
Tạo tempURL là kỹ thuật tạo ra đường dẫn public cho một object có hiệu lực trong một khoảng thời gian nhất định nhằm chia sẻ quyền truy cập object mà không cần phải công khai thông tin đăng nhập như username, password, secret key. Sử dụng tính năng tạo tempURL do SwiftClient cung cấp như sau để tạo ra các PUT/ GET tempURL.
swift tempurl --help
swift tempurl <method> <time> <path> <tempurl_key>
Ví dụ tạo ra GET tempURL để download một object
swift tempurl GET 3600 /v1/AUTH_afa7086fbef044938dbb7d8d328d452a/container/file1 tx71f555cc77df46afa6568-0063a286ee
→ /v1/AUTH_afa7086fbef044938dbb7d8d328d452a/container/file1?temp_url_sig=1fe9fbcdb9d6683eef8658a18aa97c7090525cec&temp_url_expires=1672595887
Sử dụng GET tempURL link được sinh ra ở trên để download object
--2023-01-01 23:58:42-- https://hcm.vstorage.vnglab.com/v1/AUTH_afa7086fbef044938dbb7d8d328d452a/container/file1?temp_url_sig=1fe9fbcdb9d6683eef8658a18aa97c7090525cec&temp_url_expires=1672595887
Resolving hcm.vstorage.vnglab.com (hcm.vstorage.vnglab.com)... 61.28.228.48
Connecting to hcm.vstorage.vnglab.com (hcm.vstorage.vnglab.com)|61.28.228.48|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12174069 (12M) [application/octet-stream]
Saving to: ‘file1?temp_url_sig=1fe9fbcdb9d6683eef8658a18aa97c7090525cec&temp_url_expires=1672595887’
\
file1?temp_url_sig=1fe9 100%[===============================>] 11.61M 16.1MB/s in 0.7s
\
2023-01-01 23:58:43 (16.1 MB/s) - ‘file1?temp_url_sig=1fe9fbcdb9d6683eef8658a18aa97c7090525cec&temp_url_expires=1672595887’ saved [12174069/12174069]
\
Tương tự ta có thể tạo đường dẫn tạm để cho user upload bằng cách đổi method thành "PUT".
Thiết lập ACLs cho một container
Để thiết lập ACLs cho một container, chúng tôi khuyến nghị bạn nên thực hiện tính năng này thông qua vStorage portal. Để thiết lập ACLs cho container qua vStorage portal, vui lòng tham khảo ở đây. Tuy nhiên, bạn có thể sử dụng công cụ người dùng SwiftClient để thiết lập ACLs cho một container sử dụng lệnh sau của SwiftClient:
swift post <container> -H “<X-Container-Write| X-Container-Read>:<value>”
Trong đó, biến <Value> nhận các giá trị trong bảng sau:
Value | Description |
.r:* | Any user has access to objects. No token is required in the request. |
.r:<referrer> (Exp: .r: http://example.org/referring_page) | The referrer is granted access to objects. The referrer is identified by the Referer request header in the request. No token is required. Exp:
GET /wiki/Referrer HTTP/1.1 Host: http://de.wikipedia.org Referer: http://example.org/referring_page |
This syntax (with “-” prepended to the referrer) is supported. However, it does not deny access if another element (e.g., .r:*) grants access. Exp:
GET /wiki/Referrer HTTP/1.1 Host: http://de.wikipedia.org Referer: http://example.org/referring_page
| |
.rlistings | Any user can perform a HEAD or GET operation on the container provided the user also has read access on objects (e.g., also has .r:* or .r:<referrer>. No token is required. |
Để hiểu thêm về ACLs của container, vui lòng tham khảo https://docs.openstack.org/swift/latest/overview_acl.html.
Chú ý:
Không nên sử dụng phiên bản SwiftClient quá cũ trên các hệ điều hành có phiên bản quá cũ hoặc mới nhất vì có thể gặp lỗi.
SwiftClient Không gây ra incomplete segment (segment rác) trong quá trình tải object lớn (multipart upload).
Last updated