Thursday, November 21, 2024

[Swift] – Phần 9: Sử dụng OpenStack Swift Client tương tác với Swift Storage

-

1. Tổng quan.

OpenStack Swift có thể hoạt động như một dịch vụ lưu trữ đối tượng tương tự như Amazon S3. Swift và S3 đều là dịch vụ lưu trữ đối tượng, nghĩa là chúng được thiết kế để lưu trữ và truy xuất dữ liệu không cấu trúc như hình ảnh, video và các file khác.

Swift cung cấp API RESTful cho việc lưu trữ và truy xuất dữ liệu, tương tự như S3. Điều này có nghĩa là bạn có thể tương tác với Swift thông qua HTTP bằng cách sử dụng các phương thức như GET, PUT và DELETE.

Ngoài ra, Swift cũng hỗ trợ S3 API, điều này có nghĩa là bạn có thể sử dụng các công cụ và thư viện được thiết kế cho S3 để tương tác với Swift. Tuy nhiên, hỗ trợ này có thể không bao gồm tất cả các tính năng của S3, vì vậy bạn nên kiểm tra tài liệu của Swift để biết chi tiết.

2. Cài đặt Swift Client.

Bạn cần cài đặt swift command-line client trước khi bạn có thể sử dụng các lệnh liên quan đến OpenStack Swift Client. Bạn có thể cài đặt nó bằng cách chạy lệnh sau:

apt install python3-pip -y
pip install python-swiftclient python-keystoneclient

Sau khi cài xong bạn có thể xác minh cài đặt thành công bằng lệnh kiểm tra phiên bản của OpenStack Swift Client.

shell> swift --version
python-swiftclient 4.5.0

3. Xác thực với OpenStack Swift.

Đầu tiên, bạn cần thiết lập môi trường OpenStack bằng cách xuất các biến môi trường cần thiết. Bạn có thể làm điều này bằng cách chạy script openrc mà bạn nhận được từ quản trị viên OpenStack của bạn.

File openrc.sh thường chứa các biến môi trường cần thiết để tương tác với OpenStack thông qua CLI (Command Line Interface). Nó thường chứa các thông tin như tên người dùng, mật khẩu, dự án và URL của dịch vụ xác thực (Keystone).

Dưới đây là một ví dụ về nội dung trong file openrc.sh:

cat > ./openrc.sh << 'OEF'
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
OEF

source ./openrc.sh

Trong đó:

  • OS_PROJECT_DOMAIN_NAME và OS_USER_DOMAIN_NAME là tên của domain mà dự án và người dùng thuộc về.
  • OS_PROJECT_NAME là tên của dự án bạn muốn tương tác.
  • OS_USERNAME và OS_PASSWORD là tên người dùng và mật khẩu để xác thực với Keystone.
  • OS_AUTH_URL là URL của dịch vụ Keystone.
  • OS_IDENTITY_API_VERSION và OS_IMAGE_API_VERSION là phiên bản của API mà bạn muốn sử dụng.

Bạn cũng nên kiểm tra kết nối API Openstack đã đáp ứng chưa nhé.

shell> curl http://controller:5000/v3
{"version": {"id": "v3.14", "status": "stable", "updated": "2020-04-07T00:00:00Z", "links": [{"rel": "self", "href": "http://controller:5000/v3/"}], "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}]}}

3. Các lệnh cơ bản.

Dưới đây là một số lệnh cơ bản thường được sử dụng với swift command-line client.

Tạo một container mới.

Để tạo một bucket (được gọi là container trong OpenStack Swift) bạn có thể sử dụng Swift API hoặc swift command-line client.

swift post mycontainer

Trong đó mycontainer là tên của container bạn muốn tạo.

Liệt kê tất cả các container.

shell> swift list
container1
container2
mycontainer

Xóa một container.

shell> swift delete mycontainer
mycontainer

Trong đó, mycontainer là tên của container bạn muốn xóa.

Tải lên file vào một container.

Bạn có thể sử dụng lệnh swift upload với tên của container và sau đó là danh sách các file hoặc thư mục bạn muốn tải lên.

Tạo để có danh sách file sau.

shell> cd /home
shell> touch myfile1.txt myfile2.txt myfile3.txt
shell> tree -f
.
├── ./myfile1.txt
├── ./myfile2.txt
├── ./myfile3.txt
└── ./openrc.sh

0 directories, 4 files

Ví dụ, để tải lên hai file myfile1.txt, myfile2.txt và myfile3.txt vào container mycontainer, bạn có thể chạy lệnh sau:

shell> swift upload mycontainer myfile1.txt myfile2.txt myfile3.txt
myfile3.txt
myfile1.txt
myfile2.txt

Để tải lên một thư mục, bạn chỉ cần cung cấp tên của thư mục sau tên của container.

Tạo để có danh sách file sau.

shell> mkdir /home/myfolder
shell> cd /home/myfolder/
shell> touch myfile_in_folder1.txt myfile_in_folder2.txt myfile_in_folder3.txt
shell> tree /home/myfolder/
/home/myfolder/
├── myfile_in_folder1.txt
├── myfile_in_folder2.txt
└── myfile_in_folder3.txt

0 directories, 3 files

Ví dụ, để tải lên thư mục myfolder vào container mycontainer bạn có thể chạy lệnh sau:

shell> swift upload mycontainer /home/myfolder/
home/myfolder/myfile_in_folder3.txt
home/myfolder/myfile_in_folder2.txt
home/myfolder/myfile_in_folder1.txt

Lệnh trên sẽ tải lên tất cả các file trong thư mục myfolder và các thư mục con của nó.

Nếu bạn muốn tải lên tất cả các file trong thư mục hiện tại, bạn có thể sử dụng . thay vì tên của thư mục:

swift upload mycontainer .

Liệt kê tất cả các file trong một container.

shell> swift list mycontainer
home/myfolder/myfile_in_folder1.txt
home/myfolder/myfile_in_folder2.txt
home/myfolder/myfile_in_folder3.txt
myfile1.txt
myfile2.txt
myfile3.txt

Trong đó, mycontainer là tên của container bạn muốn liệt kê các file.

Tải xuống một file từ một container.

Để tải xuống tất cả các file từ một container, bạn có thể sử dụng lệnh swift download với tên của container.

Chuẩn bị thư mục lưu các file và thư mục của mycontainer.

mkdir -p /home/download_mycontainer
cd /home/download_mycontainer/

Ví dụ, để tải xuống tất cả các file từ container mycontainer, bạn có thể chạy lệnh sau:

shell> swift download mycontainer
myfile1.txt [auth 0.336s, headers 0.346s, total 0.346s, 0.000 MB/s]
home/myfolder/myfile_in_folder3.txt [auth 0.338s, headers 0.350s, total 0.351s, 0.000 MB/s]
myfile3.txt [auth 0.342s, headers 0.349s, total 0.350s, 0.000 MB/s]
home/myfolder/myfile_in_folder1.txt [auth 0.405s, headers 0.412s, total 0.412s, 0.000 MB/s]
myfile2.txt [auth 0.430s, headers 0.436s, total 0.436s, 0.000 MB/s]
home/myfolder/myfile_in_folder2.txt [auth 0.669s, headers 0.677s, total 0.678s, 0.000 MB/s]

Lệnh trên sẽ tải xuống tất cả các file trong container mycontainer vào thư mục hiện tại.

shell> tree /home/download_mycontainer/
/home/download_mycontainer/
├── home
│   └── myfolder
│       ├── myfile_in_folder1.txt
│       ├── myfile_in_folder2.txt
│       └── myfile_in_folder3.txt
├── myfile1.txt
├── myfile2.txt
└── myfile3.txt

2 directories, 6 files

Nếu bạn muốn tải xuống một file cụ thể từ container, bạn có thể cung cấp tên của file sau tên của container. Ví dụ, để tải xuống file myfile.txt từ container mycontainer, bạn có thể chạy lệnh sau:

shell> swift download mycontainer myfile1.txt
myfile1.txt [auth 0.338s, headers 0.346s, total 0.346s, 0.000 MB/s]

Xóa một file từ một container.

shell> swift delete mycontainer myfile3.txt
myfile3.txt

Trong đó, mycontainer là tên của container bạn muốn xóa file từ, và myfile3.txt là file bạn muốn xóa.

xem thông tin của tài khoản OpenStack Swift.

Để xem thông tin của tài khoản OpenStack Swift, bạn có thể sử dụng lệnh swift stat.

shell> swift stat
                        Account: AUTH_ef46fa05202a47fbb80e6fd67dfbd887
                     Containers: 3
                        Objects: 8
                          Bytes: 12716568
Containers in policy "policy-0": 3
   Objects in policy "policy-0": 8
     Bytes in policy "policy-0": 12716568
                   Content-Type: text/plain; charset=utf-8
                    X-Timestamp: 1710440509.64465
                  Accept-Ranges: bytes
                           Vary: Accept
                     X-Trans-Id: tx1d54fc29a0584967a2c79-0065f3bd17
         X-Openstack-Request-Id: tx1d54fc29a0584967a2c79-0065f3bd17

Lệnh này sẽ trả về thông tin về tài khoản, bao gồm số lượng container, tổng số object và tổng dung lượng sử dụng.

Xem thông tin các lệnh của OpenStack Swift Client.

Sử dụng lệnhswift --help để lệnh hiển thị hướng dẫn sử dụng cho công cụ dòng lệnh Swift, một giao diện dòng lệnh cho OpenStack Swift API.

Dưới đây là một số lệnh và tùy chọn quan trọng:

  • --version: Hiển thị phiên bản của chương trình.
  • --help: Hiển thị hướng dẫn sử dụng.
  • --os-help: Hiển thị các tùy chọn xác thực OpenStack.
  • --auth <auth_url>: URL để lấy token xác thực.
  • --user <username>: Tên người dùng để lấy token xác thực.
  • --key <api_key>: Khóa để lấy token xác thực.
  • --os-username <auth-user-name>: Tên người dùng xác thực OpenStack.
  • --os-password <auth-password>: Mật khẩu xác thực OpenStack.

Các lệnh con bao gồm:

  • delete: Xóa một container hoặc các đối tượng trong một container.
  • download: Tải các đối tượng từ các container.
  • list: Liệt kê các container cho tài khoản hoặc các đối tượng cho một container.
  • post: Cập nhật thông tin meta cho tài khoản, container, hoặc đối tượng; tạo các container nếu chúng không tồn tại.
  • copy: Sao chép đối tượng, tùy chọn thêm meta.
  • stat: Hiển thị thông tin cho tài khoản, container, hoặc đối tượng.
  • upload: Tải lên các tệp hoặc thư mục đến container đã cho.
  • capabilities: Liệt kê các khả năng của cụm.
  • tempurl: Tạo một URL tạm thời.
  • auth: Hiển thị các biến môi trường liên quan đến xác thực.
  • bash_completion: Xuất dữ liệu cli tùy chọn và cờ sẵn sàng cho bash_completion.

Các ví dụ và tùy chọn khác cũng được liệt kê trong hướng dẫn sử dụng.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories