Trong bài viết này mình sẽ giới thiệu mọi người cách quản lý AWS S3 buckets bằng cách sử dụng AWS CLI. Các lệnh aws s3 bậc cao sẽ giúp đơn giản hóa việc quản lý các objects S3. Các lệnh này sẽ cho phép bạn quản lý nội dung của S3 trong chính nó và các thư mục cục bộ.
1, Install AWS CLI
Chúng ta sử dụng lệnh dưới đây để cài đặt aws cli trên ubuntu
sudo apt-get update
sudo apt-get install awscli
Kiểm tra xem đã cài đặt thành công chưa:
aws --version
2, Configuring AWS CLI
Trước khi config chúng ta cần 1 IAM user, bạn có thể tham khảo để tạo IAM user tại đây. Để user sử dụng được aws s3 thì cần phải cấp quyển s3 cho user. Ở đây mình cấp full quyển S3 cho user luôn
Sau khi đã cài đặt xong aws cli, chúng ta sử dụng lệnh sau để config
aws configure
Sẽ có 4 thông số chúng ta cần set up
AWS Access Key ID
và AWS Secret Access Key
có thể tạo sau khi tạo user như ở trên tại tab Security credentials
Default region name
có thể lựa chọn 1 trong các option tại đây
Default output format
mình chọn json
. Ngoài ra có thể thao khảo 1 số tùy chọn khác tại đây
3, Các câu lệnh cơ bản
1, Tạo bucket
aws s3 mb <target> [--option]
Ví dụ: aws s3 mb s3://new-bucket-232
Lệnh trên sẽ tạo 1 bucket mới có tên new-bucket-232
2, List bucket và objects
aws s3 ls <target> [--options]
Ví dụ aws s3 ls
Ví dụ trên sẽ list ra toàn bộ bucket mà user có quyền xem
Các bạn có thể đi sâu hơn vào 1 bucket
Ví dụ: aws s3 ls s3://s3-bucket-sample-222
3, Delete buckets
aws s3 rb <target> [--options]
Ví dụ: aws s3 rb s3://new-bucket-232
Mặc định thì lệnh trên chỉ có thể xóa được các bucket rỗng. Nếu muốn xóa các bucket đã có thêm option --force. Nhưng nếu sử dụng bucket version lệnh này cũng không cho phép bạn xóa bucket, bạn vẫn phải xóa hết content trước.
Lệnh sau sẽ xóa tất cả object, prefixes trong bucket, rồi xóa bucket
aws s3 rb s3://s3-bucket-sample-222 --force
4, Delete objects
aws s3 rm <target> [--options]
Nếu bạn muốn xóa file image1.jpeg
trong bucket new-bucket-232
, sử dụng lệnh sau
aws s3 rm s3://new-bucket-232/image1.jpeg
Nếu muốn xóa 1 folder thì cần thêm option --recursive
aws s3 rm s3://new-bucket-232/new-bucket --recursive
5, Move Objects
aws s3 mv <source> <target> [--options]
Lệnh này sẽ giúp chúng ta di chuyển objects từ bucket này sang bucket khác, từ s3 xuống local và từ local lên server.
Ví dụ:
Chuyển toàn bộ object từ s3://new-bucket-232/example sang bucket new-bucket-233:
aws s3 mv s3://new-bucket-232/example s3://new-bucket-233/
Chuyển 1 file images.jpeg từ local lên bucket new-bucket-232:
aws s3 mv images.jpeg s3://new-bucket-233/
Kéo 1 file từ bucket new-bucket-232 về local:
aws s3 mv s3://new-bucket-233/images.jpeg ./
6, Copy Objects
aws s3 cp <source> <target> [--options]
Lệnh này cũng tương tự như lệnh move nhưng thay vì chuyển file gốc thì lệnh cp sẽ tạo file mới. Ngoài ra có thể sử dụng tham số '-' để truyền cho source và target
Ví dụ:
Ghi đè text "hello world" vào file text.txt trên bucket new-bucket-232
echo "hello world" | aws s3 cp - s3://new-bucket-232/text.txt
In ra text của file text.txt trên bucket new-bucket-232
aws s3 cp s3://new-bucket-232/text.txt -
7, Sync Objects
aws s3 sync <source> <target> [--options]
Lệnh trên sẽ đồng bộ các object ở 2 bucket hoặc giữa bucket với local. Những file nào bị thiếu ở source sẽ được copy từ target và ngược lại. Tuy nhiên có option --delete để remove những file, objects ở target mà không xuất hiện ở source.
Ví dụ: Đồng bộ giữa bucket new-bucket-232 và new-bucket-233
aws s3 sync s3://new-bucket-232 s3://new-bucket-233
Tham khảo
https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html