Hướng dẫn sử dụng ZoCloud Vào ZoCloud

Object storage (S3)

Bucket S3 đặt tại Việt Nam cho file của app: upload, ảnh, bản backup. Dùng được với mọi S3 client hoặc SDK (AWS SDK, boto3, rclone, s3cmd…).

Thông số Giá trị
Endpoint https://s3.zocloud.app
Region hiện trên trang bucket (biến S3_REGION)
Kiểu địa chỉ path-style (https://s3.zocloud.app/<bucket>/<key>)
Upload đơn tối đa 100 MB; file lớn hơn dùng multipart upload (SDK tự làm)

Tạo bucket

  1. Trên canvas project, bấm Thêm → Object storage (S3).
  2. Nhập Tên (chữ thường, số, -), ví dụ files. Service gọi bucket qua tên này trong biến.
  3. Nhập Giới hạn dung lượng (GB). Ghi vượt giới hạn sẽ bị từ chối; bạn trả tiền theo dung lượng thực dùng.
  4. Bấm Tạo.

Kết nối từ service

Mục Kết nối hiện các biến tham chiếu; thêm vào Biến môi trường của service rồi deploy lại:

S3_ENDPOINT=${{files.S3_ENDPOINT}}
S3_BUCKET=${{files.S3_BUCKET}}
S3_ACCESS_KEY_ID=${{files.S3_ACCESS_KEY_ID}}
S3_SECRET_ACCESS_KEY=${{files.S3_SECRET_ACCESS_KEY}}

Các biến có sẵn của bucket:

Biến Ghi chú
S3_ENDPOINT, S3_REGION, S3_BUCKET
S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY
S3_FORCE_PATH_STYLE luôn true
AWS_ENDPOINT_URL_S3, AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY tên kiểu AWS, để SDK tự đọc

Mỗi bucket có access key riêng, chỉ truy cập được bucket này. Xem giá trị đầy đủ ở Biến kết nối → Xem thông tin kết nối (dùng cho rclone, script trên máy…).

Ví dụ (Node.js, AWS SDK v3)

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({
  endpoint: process.env.S3_ENDPOINT,
  region: process.env.S3_REGION,
  forcePathStyle: true,
  credentials: {
    accessKeyId: process.env.S3_ACCESS_KEY_ID,
    secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
  },
});

await s3.send(new PutObjectCommand({ Bucket: process.env.S3_BUCKET, Key: "hello.txt", Body: "Xin chào" }));

Ví dụ (Python, boto3)

import os, boto3

s3 = boto3.client(
    "s3",
    endpoint_url=os.environ["S3_ENDPOINT"],
    region_name=os.environ["S3_REGION"],
    aws_access_key_id=os.environ["S3_ACCESS_KEY_ID"],
    aws_secret_access_key=os.environ["S3_SECRET_ACCESS_KEY"],
    config=boto3.session.Config(s3={"addressing_style": "path"}),
)
s3.put_object(Bucket=os.environ["S3_BUCKET"], Key="hello.txt", Body=b"Xin chao")

Dung lượng

Mục Dung lượng hiện phần đã dùng, giới hạn và số file (đo định kỳ, không tức thời). Bấm Đổi giới hạn để đặt giới hạn mới. Tổng dung lượng object storage là một giới hạn của gói.

Xoá bucket

Vùng nguy hiểm → Xoá bucket, gõ tên để xác nhận. Mọi file trong bucket bị xoá, rồi bucket và key bị xoá. Không hoàn tác được.