Aller au contenu principal

sng cdn

Disponible

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>) :

CommandeAction IAMRoute
listcdn:list (sur cdn/*)GET /v1/cdn
createcdn:write (sur cdn/* puis cdn/<site>)POST /v1/cdn
deletecdn:deleteDELETE /v1/cdn/{name}
uploadcdn:upload, et cdn:purge pour vider le cachePOST /v1/cdn/{name}/uploads, POST /v1/cdn/{name}/uploads/complete
enable, disablecdn:writePOST /v1/cdn/{name}/enable, …/disable
clear-cachecdn:purgePOST /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.

FlagTypeDéfautDescription
(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.

ArgumentDescription
NAMEnom du site, premier label du domaine
FlagTypeDéfautDescription
--fallbackstringindex.htmlfichier servi pour les routes sans extension introuvables ; "" pour aucun
--s3-bucketstringvotre bucket (avec --s3-credentials)
--s3-credentialsstringSecret de votre tenant portant accessKeyId et secretAccessKey
--s3-endpointstring(AWS)endpoint public du stockage objet, en https
--s3-regionstring(us-east-1)région du bucket
--s3-prefixstringdossier du bucket servi à la racine du site
--s3-path-styleboolfalseURLs 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 :

MessageCause
… : --s3-bucket et --s3-credentials sont requis ensembleoption --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.

ArgumentDescription
NAMEnom du site
DIRdossier à publier ; son contenu devient la racine du site
FlagTypeDéfautDescription
--pruneboolfalseretirer du site les fichiers absents de DIR
--concurrencyint8envois 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 :

MessageCause
nom de fichier non publiable "mes docs/a.html" : lettres, chiffres et ._~@+=,- seulementespace, 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 ./distdossier vide
20001 fichiers : 20000 maximum par sitetrop de fichiers
./dist n'est pas un dossierDIR est un fichier
--concurrency : de 1 à 32valeur 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.

ArgumentDescription
NAMEnom 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.

ArgumentDescription
NAMEnom 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.

ArgumentDescription
NAMEnom 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é.

ArgumentDescription
NAMEnom du site
FlagTypeDéfautDescription
--yes, -yboolfalseconfirmer 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​