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

wget "https://hcm.vstorage.vnglab.com/v1/AUTH_afa7086fbef044938dbb7d8d328d452a/container/file1?temp_url_sig=1fe9fbcdb9d6683eef8658a18aa97c7090525cec&temp_url_expires=1672595887"

--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

.r:-<referrer>

(Exp: .r: -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