sng cdn
Fonctionnalité déployée et prise en charge. Les champs et commandes décrits ici sont stables au sein de la version v1alpha1.
Le groupe sng cdn gère les sites statiques de votre tenant : <site>.<tenant>.dev.stackngo.app,
contenu dans le stockage de la plateforme (ou votre propre bucket de stockage objet), servi derrière un
cache. Chaque site est un manifeste CDNSite
de l'état désiré : create, enable, disable et delete le modifient, la plateforme
l'applique en quelques minutes. upload et clear-cache agissent immédiatement.
Toutes les commandes exigent une session sur le tenant. Sinon :
tenant session required: run sng tenant use NAME. Les flags
globaux (--config, --json, -v, --version) sont décrits dans l'index de la CLI.
Nom d'un site (argument NAME partout) : minuscules, chiffres et -, 63 caractères au plus,
sans - au début ni à la fin. Sinon : nom de site invalide "X" : minuscules, chiffres et '-' (63 max.).
Actions IAM par commande (ressource cdn/<site>) :
| Commande | Action IAM | Route |
|---|---|---|
list | cdn:list (sur cdn/*) | GET /v1/cdn |
create | cdn:write (sur cdn/* puis cdn/<site>) | POST /v1/cdn |
delete | cdn:delete | DELETE /v1/cdn/{name} |
upload | cdn:upload, et cdn:purge pour vider le cache | POST /v1/cdn/{name}/uploads, POST /v1/cdn/{name}/uploads/complete |
enable, disable | cdn:write | POST /v1/cdn/{name}/enable, …/disable |
clear-cache | cdn:purge | POST /v1/cdn/{name}/cache/clear |
Les policies gérées readwrite et admin couvrent tout ; readonly couvre list. Un refus
affiche forbidden (no policy of this tenant allows it: see sng tenant policy list).
sng apply ou sng kind delete d'un CDNSite exigent aussi cdn:write / cdn:delete sur le site.
Si l'API n'a pas le CDN activé : cdn not configured (501).
sng cdn list
sng cdn list
Liste les sites du tenant courant, tels que déclarés. L'état réel se lit dans
la colonne STATE, ou avec sng kind get CDNSite NAME.
| Flag | Type | Défaut | Description |
|---|---|---|---|
| (aucun flag propre) |
sng cdn list
NAME URL STORAGE STATUS STATE
assets https://assets.acme.dev.stackngo.app custom enabled Ready
blog https://blog.exemple.fr default enabled Waiting
docs https://docs.acme.dev.stackngo.app default disabled Ready
blog: en attente d'une zone DNS vérifiée couvrant "blog.exemple.fr"
STORAGE : default (stockage de la plateforme) ou custom (votre bucket). STATUS :
disabled quand le site est en maintenance. STATE : la phase du site (Ready s'il est servi,
Waiting s'il attend la vérification de sa zone DNS, Pending, Invalid, Conflict, ou - si
inconnue) ; le message d'attente s'affiche sous le tableau. Sans site : aucun site.
Sortie --json :
{
"sites": [
{
"name": "docs",
"domain": "docs.acme.dev.stackngo.app",
"url": "https://docs.acme.dev.stackngo.app",
"storage": "default",
"maintenance": true,
"fallback": "index.html"
}
]
}
sng cdn create
sng cdn create NAME [--fallback FILE]
[--s3-bucket B --s3-credentials SECRET [--s3-endpoint URL] [--s3-region R]
[--s3-prefix P] [--s3-path-style]]
Crée le site NAME.<tenant>.dev.stackngo.app. Sans option --s3-*, le site utilise le stockage de
la plateforme et s'alimente avec sng cdn upload.
| Argument | Description |
|---|---|
NAME | nom du site, premier label du domaine |
| Flag | Type | Défaut | Description |
|---|---|---|---|
--fallback | string | index.html | fichier servi pour les routes sans extension introuvables ; "" pour aucun |
--s3-bucket | string | votre bucket (avec --s3-credentials) | |
--s3-credentials | string | Secret de votre tenant portant accessKeyId et secretAccessKey | |
--s3-endpoint | string | (AWS) | endpoint public du stockage objet, en https |
--s3-region | string | (us-east-1) | région du bucket |
--s3-prefix | string | dossier du bucket servi à la racine du site | |
--s3-path-style | bool | false | URLs path-style (MinIO, certains fournisseurs) |
sng cdn create docs
sng cdn create app --fallback ""
sng cdn create assets --s3-bucket acme-assets --s3-credentials acme-assets-s3 \
--s3-endpoint https://s3.gra.io.cloud.ovh.net --s3-region gra --s3-path-style
site docs créé : https://docs.acme.dev.stackngo.app (stockage default)
déposez le contenu : sng cdn upload docs ./dist
le site est servi …
Sortie --json : le site, même forme qu'un élément de list.
Erreurs :
| Message | Cause |
|---|---|
… : --s3-bucket et --s3-credentials sont requis ensemble | option --s3-* incomplète (contrôle local) |
le site "docs" existe déjà (409) | même nom dans le tenant |
spec.s3 ne peut pas viser le bucket par défaut : retirer spec.s3 (400) | bucket de la plateforme |
spec.s3.endpoint "http://…" : https://hôte[:port] attendu (400) | endpoint non chiffré ; aussi hôte interne interdit, adresse non publique |
spec.fallback "/index.html" : chemin relatif attendu (400) | fallback absolu |
stockage par défaut (501) | stockage de la plateforme indisponible : contacter le support |
sng cdn upload
sng cdn upload NAME DIR [--prune] [--concurrency N]
Alias : uploads. Envoie chaque fichier de DIR au site (stockage default uniquement), puis
vide le cache du site.
| Argument | Description |
|---|---|
NAME | nom du site |
DIR | dossier à publier ; son contenu devient la racine du site |
| Flag | Type | Défaut | Description |
|---|---|---|---|
--prune | bool | false | retirer du site les fichiers absents de DIR |
--concurrency | int | 8 | envois en parallèle, de 1 à 32 |
sng cdn upload docs ./dist --prune
envoyé 42/42
site docs : 42 fichier(s) publié(s), 3 retiré(s)
La progression (envoyé N/M, par lots de 1 000) et les fichiers ignorés
(ignoré (pas un fichier régulier) : lien) sont écrits sur la sortie d'erreur. Les fichiers
.git/ et .DS_Store ne sont jamais envoyés ; les liens symboliques sont ignorés.
Sortie --json : {"uploaded": 42, "deleted": 3, "cache_purged": true}. Si le cache n'a pas
pu être vidé, la commande réussit mais avertit : attention : cache non vidé, relancez sng cdn clear-cache docs.
Erreurs :
| Message | Cause |
|---|---|
nom de fichier non publiable "mes docs/a.html" : lettres, chiffres et ._~@+=,- seulement | espace, accent ou caractère spécial dans un chemin |
fichier trop gros "video.mp4" (… octets, max 104857600) | fichier de plus de 100 Mio |
aucun fichier à publier dans ./dist | dossier vide |
20001 fichiers : 20000 maximum par site | trop de fichiers |
./dist n'est pas un dossier | DIR est un fichier |
--concurrency : de 1 à 32 | valeur hors bornes |
le site "assets" sert un … : déposez les fichiers dans ce bucket (409) | le site sert votre propre bucket |
site "docs" (404) | site inconnu dans le tenant |
3 fichier(s) non déposé(s), dont "a.js" (400) | un envoi n'est pas arrivé (URL expirée après 15 min, réseau) ; relancer |
sng cdn enable
sng cdn enable NAME
Lève la maintenance : le site sert de nouveau son contenu.
| Argument | Description |
|---|---|
NAME | nom du site |
sng cdn enable docs
site docs réactivé (…)
Sans effet si le site n'est pas en maintenance. Sortie --json : le site, même forme qu'un
élément de list. Erreurs : site "docs" (404) ; site "docs" modifié entre-temps, réessayez (409).
sng cdn disable
sng cdn disable NAME
Met le site en maintenance : 503 avec une page de maintenance, contenu et domaine conservés.
| Argument | Description |
|---|---|
NAME | nom du site |
sng cdn disable docs
site docs en maintenance (…)
Le cache du site est vidé tout de suite, puis 1, 3 et 6 minutes plus tard. Sortie et erreurs :
comme enable.
sng cdn clear-cache
sng cdn clear-cache NAME
Alias : clear_cache. Vide le cache du site sur tous les serveurs du CDN.
| Argument | Description |
|---|---|
NAME | nom du site |
sng cdn clear-cache docs
cache du site docs vidé
Pas de sortie --json propre (l'API répond 204). Erreurs : site "docs" (404) ;
purge du cache (501) si la purge n'est pas configurée sur l'API.
sng cdn delete
sng cdn delete NAME [--yes]
Supprime le site, son contenu (stockage default) et son cache. Irréversible. Un bucket
injecté n'est jamais modifié.
| Argument | Description |
|---|---|
NAME | nom du site |
| Flag | Type | Défaut | Description |
|---|---|---|---|
--yes, -y | bool | false | confirmer sans invite interactive |
sng cdn delete docs --yes
site docs supprimé (42 fichier(s) retiré(s))
Sortie --json : {"name": "docs", "domain": "docs.acme.dev.stackngo.app", "deleted_objects": 42, "cache_purged": true}.
Erreurs : confirmation requise : relancez avec --yes ou depuis un terminal interactif ;
opération annulée ; site "docs" (404).
Voir aussi
- Guides : Publier un site statique, Maintenance et cache.
- Kind : CDNSite.
- Commandes génériques :
sng kind get CDNSite docs(statut),sng kind delete CDNSite docs(Ressources).