AWS CLI
AWS CLI (Amazon Web Services Command Line Interface) là công cụ dòng lệnh chính thức của AWS, hoạt động hoàn toàn tương thích với LANIT Cloud Simple Storage nhờ giao thức S3-compatible. Đây là lựa chọn lý tưởng cho DevOps, tự động hóa scripts và tích hợp CI/CD pipeline.
Cài đặt AWS CLI
Linux
# Ubuntu / Debian
sudo apt update && sudo apt install awscli
# Hoặc cài phiên bản mới nhất (v2)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
macOS
# Homebrew
brew install awscli
# Hoặc tải package .pkg từ trang AWS
Windows
Tải file cài đặt .msi từ https://aws.amazon.com/cli/ và chạy installer.
Kiểm tra cài đặt:
aws --version
# aws-cli/2.x.x Python/3.x.x ...
Cấu hình kết nối LANIT Cloud
Trước tiên, lấy Access Key ID và Secret Access Key từ LANIT Cloud Portal (xem Access Key):

Phương pháp 1: Sử dụng named profile (khuyến nghị)
aws configure --profile lanit
Nhập lần lượt:
AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: hn
Default output format [None]: json
Phương pháp 2: Chỉnh sửa file cấu hình
Mở ~/.aws/credentials (Linux/macOS) hoặc %USERPROFILE%\.aws\credentials (Windows):
[lanit]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
Mở ~/.aws/config:
[profile lanit]
region = hn
output = json
Thiết lập endpoint
LANIT Cloud Simple Storage không phải AWS, nên mỗi lệnh cần thêm tham số --endpoint-url. Tạo alias trong shell để gọn hơn:
Linux/macOS — thêm vào ~/.bashrc hoặc ~/.zshrc:
alias aws-lanit='aws --endpoint-url https://s3.lanit.com.vn --profile lanit'
Tải lại shell:
source ~/.bashrc
Kiểm tra kết nối:
aws-lanit s3 ls
Các lệnh thường dùng
Tất cả ví dụ dưới đây sử dụng alias aws-lanit. Nếu không dùng alias, thêm --endpoint-url https://s3.lanit.com.vn --profile lanit vào cuối mỗi lệnh.
Quản lý Bucket
# Liệt kê tất cả bucket
aws-lanit s3 ls
# Tạo bucket mới
aws-lanit s3 mb s3://ten-bucket-moi
# Xóa bucket rỗng
aws-lanit s3 rb s3://ten-bucket
# Xóa bucket và toàn bộ nội dung
aws-lanit s3 rb s3://ten-bucket --force
Quản lý Object
# Liệt kê object trong bucket
aws-lanit s3 ls s3://ten-bucket
# Liệt kê đệ quy (bao gồm subfolder)
aws-lanit s3 ls s3://ten-bucket --recursive
# Liệt kê với kích thước file
aws-lanit s3 ls s3://ten-bucket --recursive --human-readable --summarize
Upload và Download
# Upload một file
aws-lanit s3 cp /duong/dan/local/file.txt s3://ten-bucket/
# Upload vào thư mục cụ thể trong bucket
aws-lanit s3 cp report.pdf s3://ten-bucket/reports/2024/
# Upload toàn bộ thư mục
aws-lanit s3 cp /local/folder/ s3://ten-bucket/folder/ --recursive
# Download file về máy
aws-lanit s3 cp s3://ten-bucket/file.txt /local/downloads/
# Download toàn bộ bucket về thư mục local
aws-lanit s3 cp s3://ten-bucket/ /local/backup/ --recursive
Đồng bộ hóa (Sync)
# Đồng bộ local → bucket (chỉ upload file mới/đã thay đổi)
aws-lanit s3 sync /local/folder/ s3://ten-bucket/
# Xem trước (dry run)
aws-lanit s3 sync /local/folder/ s3://ten-bucket/ --dryrun
# Đồng bộ bucket → local
aws-lanit s3 sync s3://ten-bucket/ /local/folder/
# Xóa file đích không còn trong nguồn
aws-lanit s3 sync /local/folder/ s3://ten-bucket/ --delete
# Loại trừ file theo pattern
aws-lanit s3 sync /local/folder/ s3://ten-bucket/ --exclude "*.log" --exclude "tmp/*"
# Chỉ đồng bộ file theo pattern
aws-lanit s3 sync /local/folder/ s3://ten-bucket/ --include "*.jpg" --include "*.png"
Xóa Object
# Xóa một file
aws-lanit s3 rm s3://ten-bucket/file.txt
# Xóa toàn bộ nội dung thư mục
aws-lanit s3 rm s3://ten-bucket/old-logs/ --recursive
# Xóa theo pattern
aws-lanit s3 rm s3://ten-bucket/ --recursive --exclude "*" --include "*.tmp"
Thao tác nâng cao với s3api
Lệnh s3api cho phép thực hiện các thao tác chi tiết hơn s3:
# Xem metadata của object
aws-lanit s3api head-object \
--bucket ten-bucket \
--key path/to/object.pdf
# Tạo presigned URL (hiệu lực 1 giờ)
aws-lanit s3 presign s3://ten-bucket/private-file.pdf \
--expires-in 3600
# Lấy thông tin bucket
aws-lanit s3api get-bucket-location --bucket ten-bucket
# Đọc Bucket Policy
aws-lanit s3api get-bucket-policy --bucket ten-bucket
# Đặt Bucket Policy từ file JSON
aws-lanit s3api put-bucket-policy \
--bucket ten-bucket \
--policy file://policy.json
# Lấy cấu hình CORS
aws-lanit s3api get-bucket-cors --bucket ten-bucket
# Đặt cấu hình CORS từ file JSON
aws-lanit s3api put-bucket-cors \
--bucket ten-bucket \
--cors-configuration file://cors.json
Upload hiệu suất cao (Multipart)
AWS CLI tự động dùng multipart upload cho file lớn hơn 8MB. Có thể tùy chỉnh:
aws-lanit s3 cp large-file.iso s3://ten-bucket/ \
--expected-size 10737418240 \
--part-size 32mb \
--acl private
Hoặc cấu hình mặc định trong ~/.aws/config:
[profile lanit]
region = hn
s3 =
multipart_threshold = 64MB
multipart_chunksize = 32MB
max_concurrent_requests = 10
Sử dụng trong Script / CI-CD
Ví dụ script backup tự động:
#!/bin/bash
BACKUP_DIR="/var/data"
BUCKET="ten-bucket"
DATE=$(date +%Y%m%d-%H%M%S)
ENDPOINT="https://s3.lanit.com.vn"
# Nén và upload
tar -czf /tmp/backup-${DATE}.tar.gz ${BACKUP_DIR}
aws s3 cp /tmp/backup-${DATE}.tar.gz s3://${BUCKET}/backups/ \
--endpoint-url ${ENDPOINT} \
--profile lanit
# Dọn dẹp file tạm
rm /tmp/backup-${DATE}.tar.gz
echo "Backup hoàn tất: backup-${DATE}.tar.gz"
Biến môi trường
Thay vì dùng file cấu hình, bạn có thể truyền thông tin xác thực qua biến môi trường (phù hợp với Docker, CI/CD):
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
export AWS_DEFAULT_REGION=hn
aws s3 ls --endpoint-url https://s3.lanit.com.vn
Xử lý sự cố
Lỗi An error occurred (InvalidAccessKeyId):
- Kiểm tra Access Key ID và Secret Access Key đúng và đang Active
- Kiểm tra profile đang dùng:
aws configure list --profile lanit
Lỗi An error occurred (SignatureDoesNotMatch):
- Đảm bảo endpoint đúng:
https://s3.lanit.com.vn - Kiểm tra đồng hồ hệ thống chính xác
Lỗi SSL certificate verify failed:
- Thêm flag
--no-verify-ssl(chỉ dùng khi debug, không dùng trong production) - Hoặc cập nhật CA certificates:
sudo update-ca-certificates
Upload rất chậm:
- Tăng concurrent requests trong config:
max_concurrent_requests = 20 - Tăng chunk size:
multipart_chunksize = 64MB