Skip to content

Operations

@nx/asset không được deploy riêng. Nó ship bên trong host application nào mount nó. Các mối quan tâm vận hành dưới đây giới hạn ở bề mặt asset bên trong các host đó.

1. Deployment

Thuộc tínhGiá trị
ImageN/A — đóng gói vào image host (commerce / finance / ledger)
ReplicasN/A — theo deployment của host
ResourcesN/A — tính trong host
ProbesN/A — healthcheck của host bao phủ
Snowflake ID rangeN/A — không phát sinh ID
Migration modeKhông — không có schema/migration
Buildbun run rebuild (chỉ phụ thuộc @nx/core)

Traefik labels

N/A — route qua router sẵn có của service host. Route asset xuất hiện dưới base path của host (vd /v1/api/commerce/assets).

2. Observability

SignalNguồnNơi xem
Logshost stdout (key-value có cấu trúc)kubectl logs <host-pod> / Loki, scope AssetController / BanksVNController
Metricshost /metrics (không có metric riêng cho asset)host Grafana dashboard
Traceskế thừa từ host
Healthhost GET /healthz, GET /readyzGateway portal

Dòng log quan trọng

DòngNguồnGhi chú
Failed to create MetaLink for %sAssetController UPLOADTạo MetaLink fail nhưng object đã lưu — bắt vào response, không throw
Failed to delete MetaLink for %s/%sAssetController DELETE_OBJECTObject đã xóa nhưng dọn MetaLink fail (async, best-effort)
banks-vn.logo.not_foundBanksVNControllerPNG được yêu cầu thiếu trên đĩa → 404

3. Security

Mối quan tâmBiện pháp
AuthNCác route /assets ghi (upload/delete/list) + /meta-links yêu cầu BASIC hoặc JWT (verifier của host); route đọc/download + banks-vn là public
AuthZMetaLinkController đặt authorize: { skip: true } trên mọi route hiện tại — kiểm tra Casbin tắt cho MetaLink
Path traversalisValidPath/isValidName (độ sâu tối đa 2) trên tên object; regex logo ngân hàng ^[A-Za-z0-9]+\.png$
Content sniffingx-content-type-options: nosniff trên mọi stream object/logo
SecretsS3 creds qua host env (APP_ENV_S3_*); không bao giờ trong code
Cachingregistry ngân hàng max-age=3600; logo ngân hàng max-age=604800, immutable
Đặt tên objectTên object UUID8 ngẫu nhiên ngăn key do client kiểm soát (trừ i18n.json)

4. Runbook

4.1 Lớp Alert

AlertTriggerCheckFixEscalate
Upload 5xx spikehost 5xx trên /assets/uploadlog Failed to create MetaLink / lỗi S3xác minh S3 reachable + credentialson-call backend
Object mồ côiobject có mặt, không có MetaLinkdòng log Failed to create MetaLinktạo lại MetaLink hoặc upload lạion-call backend
Logo ngân hàng 404banks-vn.logo.not_foundfilename vs resources/banks-vn/*.pngthêm PNG thiếu vào bundle + redeploy hostplatform

4.2 Thao tác thường gặp

Thao tácLệnh / hành động
Tail log assetkubectl logs -n <ns> -f deploy/<host> và lọc AssetController
Kiểm tra kết nối S3check APP_ENV_S3_ENDPOINT reachable từ host pod
Inspect một MetaLinkGET <host>/meta-links?filter=... (JWT/Basic)
List object trong bucketGET <host>/assets/objects?prefix=... (JWT/Basic)

5. Trang liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.