huaweicloud/huawei-cloud-obs-upload

Téléchargez un fichier ou un répertoire local vers un bucket Huawei Cloud OBS (Object Storage Service) spécifié via obsutil, et configurez une tâche de téléchargement planifiée/périodique (crontab) qui synchronise un répertoire local avec un bucket OBS. Permet également de lister les buckets OBS avec leur capacité de stockage et le nombre d'objets.

Qu'est-ce que huawei-cloud-obs-upload ?

Cette compétence permet de gérer les téléchargements vers Huawei Cloud OBS via obsutil et d'obtenir des statistiques sur les buckets. Elle est conçue pour être utilisée avec des agents d'IA tels que Claude Code, Cursor ou Codex, et nécessite que l'utilisateur configure ses identifiants AK/SK dans son terminal (aucune lecture directe en conversation). Le skill implémente une séparation stricte des outils : obsutil est utilisé pour les téléchargements de fichiers/répertoires et les synchronisations planifiées, tandis que la CLI `hcloud` liste les buckets via `hcloud obs ls` et interroge les métriques CES (`CES ShowMetricData`) pour la capacité et le nombre d'objets. La planification périodique repose sur crontab (Linux/macOS) ou schtasks (Windows). Le skill applique des mesures de sécurité rigoureuses : il refuse toute opération destructive (suppression, vidage de bucket), exige une confirmation explicite de l'utilisateur avant chaque téléchargement ou configuration de tâche planifiée, et ne devine jamais le chemin local, le nom du bucket ou le préfixe cible. Une vérification des prérequis (CLI hcloud >= 3.2.0, obsutil >= 5.5.0) et de la configuration des identifiants obsutil est effectuée systématiquement.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/huaweicloud/huaweicloud-skills/tree/HEAD/skills/storage/obs/huawei-cloud-obs-upload

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence Huawei Cloud OBS Upload

Présentation

Téléchargez des fichiers ou répertoires locaux vers des buckets Huawei Cloud OBS, listez les buckets avec leur capacité et le nombre d'objets, et planifiez des téléchargements périodiques via crontab. Les opérations de téléchargement utilisent obsutil ; le listage et les statistiques des buckets utilisent hcloud obs ls + les métriques CES.

Principe de séparation des outils :

  • obsutil — Téléchargement de fichier/répertoire, synchronisation planifiée (outil principal de téléchargement ; la CLI hcloud ne supporte pas PutObject)
  • CLI hcloud — Listage des buckets via hcloud obs ls (mode obsutil), statistiques de capacité/nombre d'objets via hcloud CES ShowMetricData
  • crontab / Planificateur de tâches — Tâche planifiée au niveau du système d'exploitation pour les téléchargements périodiques (pas de dépendance à un démon)

Architecture de sécurité :

  • Les AK/SK ne sont jamais lus, affichés ou imprimés dans la conversation
  • Les identifiants obsutil sont configurés par l'utilisateur dans son terminal (jamais demandés dans la conversation)
  • Les opérations de suppression sont strictement interdites (irréversibles) ; les opérations hors périmètre sont refusées avec des alternatives guidées
  • Pour les téléchargements de répertoires, la décision de préserver la structure du répertoire (-flat) est prise par la réponse explicite du client, jamais supposée
  • Chaque téléchargement (Tâche 2) et chaque configuration de téléchargement planifié (Tâche 3) nécessite la confirmation explicite de l'utilisateur avant d'exécuter la commande ou d'écrire dans crontab
  • L'agent exécute uniquement les étapes décrites dans cette compétence pour le bucket et le chemin exacts spécifiés par l'utilisateur ; il n'effectue jamais d'autre action OBS/CLI pour le compte de l'utilisateur

⚠️ Avis de transmission de données

  • Le téléchargement transfère des fichiers/répertoires locaux vers le stockage cloud distant et les y conserve de manière persistante. Avant de télécharger, informez clairement l'utilisateur : "Le téléchargement de <chemin> transmettra les données vers le bucket OBS <Bucket> et les stockera dans le cloud." Si l'utilisateur n'avait pas prévu cela, arrêtez-vous avant d'exécuter.
  • Les téléchargements planifiés poussent les données de manière répétée d'un répertoire local vers le cloud selon un calendrier récurrent. Avertissez explicitement l'utilisateur que les données seront transmises et conservées à distance à chaque exécution.
  • Vérifiez le chemin à télécharger avant d'exécuter ; si le chemin est large (par exemple, un répertoire personnel) ou contient un contenu inattendu, confirmez la portée avec l'utilisateur avant le téléchargement.

⛔ Opérations interdites (Contraintes de sécurité)

Cette compétence interdit strictement les opérations suivantes, quelles que soient les demandes de l'utilisateur. Les actions interdites sont décrites sémantiquement ; aucun exemple de commande destructive n'est fourni.

Opération interditeRaison
❌ Supprimer un bucketIrréversible ; détruit l'intégralité du bucket et tous les objets
❌ Supprimer un objetIrréversible ; les objets supprimés ne peuvent pas être récupérés (sauf si le versioning est activé)
❌ Supprimer en masse des objetsIrréversible ; la suppression en masse a un impact large
❌ Vider un bucketIrréversible ; supprime tous les objets du bucket
❌ Télécharger un objetCette compétence est uniquement dédiée au téléchargement vers le cloud ; le téléchargement depuis le cloud est un workflow séparé
❌ Créer un bucketLa création de bucket possède une compétence dédiée avec tous les prérequis
❌ Copier un objet entre bucketsLa copie d'objets entre buckets est hors du périmètre de cette compétence
❌ Modifier la configuration du cycle de vie d'un bucketLa gestion des coûts de stockage est une tâche de configuration distincte au niveau du bucket
❌ Restaurer un objet archivéLa restauration d'archive est un workflow séparé avec des modes de récupération et une durée de vie
❌ Générer des URL pré-signéesLe partage temporaire nécessite une signature SDK ; non supporté par le téléchargement CLI
❌ Modifier l'ACL ou la politique d'un bucketLa gestion des permissions est une tâche de sécurité distincte
❌ Demander à l'utilisateur de fournir AK/SK directement dans la conversationLes identifiants ne doivent jamais apparaître dans la conversation
❌ Extraire AK/SK des fichiers de configuration hcloudLes identifiants sont cryptés et ne peuvent pas être utilisés directement
❌ Sauter la vérification des identifiants obsutil avant les opérations OBSLes opérations échouent sans identifiants configurés
❌ Utiliser -flat pour les téléchargements de répertoires sans demander au client-flat supprime la structure du répertoire ; doit suivre la réponse explicite du client
❌ Deviner le chemin local, le nom du bucket ou le préfixe cibleLes paramètres requis doivent être fournis par l'utilisateur

Si un utilisateur demande une opération de suppression, vous devez refuser et informer : "Conformément aux contraintes de sécurité, cette compétence n'autorise pas les opérations de suppression (suppression de bucket/d'objet/suppression en masse/vidage de bucket). Veuillez utiliser la console Huawei Cloud OBS ou obsutil manuellement."

Si un utilisateur demande une opération hors périmètre, n'essayez pas de l'effectuer. Informez l'utilisateur avec l'alternative recommandée dans le tableau ci-dessous :

OpérationAlternative recommandée
Télécharger un objetUtilisez obsutil cp obs://<Bucket>/<Clé> <CheminLocal> manuellement, ou la console OBS
Créer un bucketUtilisez la compétence dédiée huawei-cloud-obs-bucket-create, ou la console OBS
Copier un objetUtilisez hcloud OBS CopyObject manuellement, ou la console OBS
Configuration du cycle de vieUtilisez la console OBS (Bucket > Cycle de vie), ou hcloud OBS SetBucketLifecycle
Restaurer un objet archivéUtilisez obsutil restore obs://<Bucket>/<Clé> manuellement, ou la console OBS
URL pré-signéeUtilisez le SDK Huawei Cloud (Java/Python/Go) pour générer des URL pré-signées, ou la console OBS
ACL/Politique de bucketUtilisez la console OBS (Bucket > Permissions), ou hcloud OBS SetBucketAcl/SetBucketPolicy

Architecture

Gestion des téléchargements Huawei Cloud OBS
├── Tâche 1 : ListBucketsWithStats   (Lister les buckets avec capacité et nombre d'objets)
│   ├── 1a. hcloud obs ls : lister tous les buckets
│   ├── 1b. Métriques CES / API OBS : interroger la capacité et le nombre d'objets du bucket
│   └── 1c. Rapporter un tableau des statistiques des buckets à l'utilisateur
├── Tâche 2 : UploadFile             (Télécharger un fichier ou répertoire local vers le bucket cible)
│   ├── 2a. Confirmer le chemin local + le nom du bucket + le préfixe cible avec l'utilisateur
│   ├── 2b. Pour un répertoire : demander au client s'il souhaite préserver la structure du répertoire (décider -flat)
│   ├── 2c. Avertir que les données persistent à distance + obtenir la confirmation explicite de l'utilisateur
│   ├── 2d. obsutil cp : fichier unique (-flat) ou répertoire (-r, éventuellement -flat selon la réponse du client)
│   └── 2e. Vérifier le résultat du téléchargement
└── Tâche 3 : ScheduledUpload       (Planifier le téléchargement périodique d'un répertoire local vers le bucket cible)
    ├── 3a. Confirmer le répertoire local + bucket + préfixe + période de planification avec l'utilisateur
    ├── 3b. Demander au client s'il souhaite préserver la structure du répertoire (décider -flat)
    ├── 3c. Avertir de la persistance + obtenir la confirmation explicite de l'utilisateur
    ├── 3d. Générer le script de téléchargement obsutil (avec/sans -flat selon la réponse du client)
    ├── 3e. Configurer la tâche planifiée crontab / Planificateur de tâches
    └── 3f. Vérifier que la tâche planifiée est configurée

Prérequis

Vérification du prérequis 1/3 : Huawei Cloud CLI (hcloud / KooCLI) >= 3.2.0 requis Exécutez hcloud version pour vérifier que la version >= 3.2.0. Si elle n'est pas installée ou trop ancienne, consultez references/cli-installation-guide.md pour le guide d'installation.

hcloud version

Vérification du prérequis 2/3 : obsutil >= 5.5.0 requis (pour les fonctionnalités de téléchargement) Le téléchargement de fichiers/répertoires nécessite l'outil CLI Huawei Cloud obsutil. Exécutez obsutil version pour vérifier que la version >= 5.5.0. S'il n'est pas installé, consultez references/cli-installation-guide.md pour le guide d'installation.

obsutil version

Vérification du prérequis 3/3 : Configuration des identifiants obsutil requise

Le module hcloud obs s'appuie sur obsutil en arrière-plan, ce qui nécessite une configuration séparée d'AK/SK et d'Endpoint. Avant d'effectuer des opérations OBS, vous devez vérifier si les identifiants obsutil sont configurés :

hcloud obs ls -limit=1

Si la réponse est Please set ak, sk and endpoint in the configuration file! ou InvalidAccessKeyId, les identifiants obsutil ne sont pas configurés.

Solution : Dirigez l'utilisateur pour configurer les identifiants obsutil dans son propre terminal (ne demandez pas à l'utilisateur de fournir AK/SK directement dans la conversation), avec l'avertissement de sécurité ci-dessous :

Les identifiants obsutil ne sont pas configurés. Veuillez exécuter la commande suivante dans votre terminal pour configurer (AK/SK peuvent être obtenus depuis la page "Mes identifiants" de la console Huawei Cloud) :

  hcloud obs config -i=<VotreAK> -k=<VotreSK> -e=obs.<Région>.myhuaweicloud.com

Exemple (Région Guangzhou) :
  hcloud obs config -i=<VotreAK> -k=<VotreSK> -e=obs.cn-south-1.myhuaweicloud.com

Endpoints courants :
  cn-north-4  → obs.cn-north-4.myhuaweicloud.com
  cn-east-3   → obs.cn-east-3.myhuaweicloud.com
  cn-south-1  → obs.cn-south-1.myhuaweicloud.com
  cn-southwest-2 → obs.cn-southwest-2.myhuaweicloud.com

⚠️ Avertissement de sécurité : placer AK/SK sur la ligne de commande les expose à l'historique du shell et aux listes de processus du système d'exploitation.
Préférez la configuration interactive (`hcloud configure`) ou les variables d'environnement (HW_ACCESS_KEY / HW_SECRET_KEY).
Après configuration, effacez l'historique de votre shell si la commande en texte clair a été utilisée.

Réessayez une fois la configuration terminée.

⚠️ Exigences de format des paramètres hcloud

Les commandes API de service cloud hcloud (KooCLI) (module en majuscules, par ex. hcloud CES ShowMetricData) doivent utiliser le format --param=valeur (relié par un signe égal) ; le format séparé par des espaces n'est pas supporté.

✅ Correct : hcloud CES ShowMetricData --region=cn-south-1 --namespace=SYS.OBS

❌ Incorrect : hcloud CES ShowMetricData --region cn-south-1

Remarque : hcloud obs (minuscules, mode obsutil) mappe directement les commandes obsutil et utilise le style de paramètre obsutil (par ex. hcloud obs ls, hcloud obs config -i=...) ; la règle --param=valeur ne s'applique pas. Il n'y a pas de commande hcloud OBS ListBuckets — utilisez hcloud obs ls pour lister les buckets.


Authentification

Règles de sécurité (à suivre impérativement) :

  • Interdit de lire, afficher ou imprimer les valeurs AK/SK
  • Interdit de demander à l'utilisateur de saisir AK/SK directement dans la conversation
  • Interdit d'utiliser hcloud configure set pour transmettre des valeurs d'identifiants en texte clair
  • Interdit d'accepter AK/SK directement fournis par l'utilisateur dans la conversation
  • Autorisé uniquement à lire les identifiants depuis des variables d'environnement ou des fichiers de configuration CLI configurés

⚠️ Avertissement d'exposition des identifiants (à partager avec l'utilisateur lorsque la configuration des identifiants est discutée) :

  • Transmettre AK/SK comme arguments de ligne de commande (par ex., obsutil config -ak=... -sk=... ou hcloud configure set --access-key-id=...) expose les identifiants à l'historique du shell, aux listes de processus du système d'exploitation, aux journaux d'audit, aux enregistrements de terminal et à la documentation copiée.
  • Préférez la configuration interactive (hcloud configure) ou les variables d'environnement (HW_ACCESS_KEY / HW_SECRET_KEY).
  • Après avoir configuré via une commande en texte clair, effacez l'historique du shell (history -c ou supprimez la ligne incriminée de ~/.bash_history).
  • Le fichier de configuration des identifiants obsutil (par ex., ~/.obsutilconfig) doit avoir des permissions restreintes (par ex., 600).

⚠️ Important : Gestion des identifiants fournis par l'utilisateur

Si un utilisateur tente de fournir AK/SK directement (par ex., "mon AK est xxx, SK est yyy") :

  1. Arrêtez-vous immédiatement - N'exécutez aucune commande
  2. Refusez poliment et renvoyez le message suivant :
    Pour la sécurité du compte, veuillez ne pas fournir l'ID de clé d'accès et la clé secrète d'accès Huawei Cloud directement dans la conversation.
    
    Veuillez utiliser l'une des méthodes sécurisées suivantes pour configurer les identifiants :
    
    Méthode 1 : Configuration interactive (recommandée)
        hcloud configure
        # Saisissez AK/SK comme demandé ; les identifiants seront stockés de manière sécurisée dans un fichier de configuration local
    
    Méthode 2 : Configuration par variable d'environnement
        export HW_ACCESS_KEY=<votre-id-de-clé-d'accès>
        export HW_SECRET_KEY=<votre-clé-secrète-d'accès>
    
    Une fois la configuration terminée, veuillez réessayer votre demande.
    
  3. Ne continuez pas à exécuter des opérations Huawei Cloud tant que les identifiants ne sont pas configurés

Vérifiez la configuration CLI :

   hcloud configure list

Vérifiez si la sortie contient une configuration valide (AK/SK, IAM, etc.).

Si aucun identifiant valide n'existe, arrêtez-vous ici.


Politiques de permissions IAM

Assurez-vous que l'utilisateur IAM dispose des permissions requises. Consultez references/iam-policies.md pour le tableau complet des permissions.

Permissions minimales requises :

  • obs:bucket:list — Lister les buckets
  • obs:bucket:get — Obtenir les attributs du bucket (capacité, nombre d'objets)
  • obs:object:get — Lire les informations des objets
  • obs:object:put — Télécharger des objets

Limites de périmètre :

  • Contrainte de portée : Cette compétence ne peut effectuer QUE les actions suivantes, et uniquement sur les buckets/chemins spécifiés par l'utilisateur après confirmation :
    • hcloud obs ls / obsutil ls — lister les buckets et les objets pour la portée spécifiée par l'utilisateur
    • hcloud CES ShowMetricData / hcloud OBS GetBucketStorageInfo — lire la capacité / le nombre d'objets du bucket
    • obsutil cp — télécharger le fichier/répertoire local confirmé vers le bucket confirmé
    • crontab (Linux/macOS) ou schtasks (Windows) — écrire/supprimer la tâche de téléchargement planifié confirmée
  • Toutes les autres opérations CLI/outil (suppression, téléchargement depuis le cloud, copie, création de bucket, modification de configuration, etc.) sont strictement hors périmètre et doivent être refusées.
  • Doit s'arrêter si : les identifiants sont manquants ou invalides, l'utilisateur refuse une confirmation, le bucket cible n'existe pas, ou le chemin local n'existe pas.
  • Actions interdites : toute opération de suppression, toute opération hors périmètre listée ci-dessus, modification de la liste d'outils ici, ou exécution de toute commande au-delà du périmètre confirmé.

Workflows principaux

Tâche 1 : Lister les buckets avec capacité et nombre d'objets

Listez les buckets via obsutil, puis interrogez la capacité et le nombre d'objets du bucket à l'aide des métriques de capacité CES ou de l'API OBS.

⚠️ Séparation des outils : hcloud obs ls pour le listage, hcloud CES ShowMetricData pour les statistiques

  • hcloud obs ls : lister tous les buckets (mode obsutil ; pas de paramètre --region — la région est définie via hcloud obs config -e=...)
  • hcloud CES ShowMetricData / API OBS : interroger la capacité et le nombre d'objets de chaque bucket

📄

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

huaweicloud/huawei-cloud-dws-io-diag

DWS cluster I/O overload root cause diagnosis skill, based on KooCLI v3.2.0+ and DWS Autopilot MCP Server. Automatically collects I/O metrics, analyzes root causes (customer-side / system-side) via three-stage decision tree, and outputs a standardized diagnosis report. Applicable to DWS cluster I/O usage too high, I/O alarms, disk I/O load anomaly scenarios. Trigger words: "I/O高", "I/O告警", "I/O诊断", "I/O过载", "IO高", "IO告警", "IO诊断", "IO过载", "磁盘IO负载异常", "util打满", "await高", "high I/O", "I/O alarm", "I/O diagnosis"

huaweicloud/huawei-cloud-ecs-manage

Use when managing Huawei Cloud ECS (Elastic Cloud Server / 弹性云服务器) instances — lifecycle management (create / start / stop / restart / delete), day-to-day change operations (resize / reinstall OS / reset password / replace keypair / bind & unbind EIP / change security group / add & remove NIC / attach & detach volume), instance querying, quota/flavor/image inspection, mandatory async-job polling after every write, and multi-step root-cause diagnosis of ECS instance creation failures (quota → flavor → image → network → keypair → disk). Provides 23 huawei_* actions: huawei_list_ecs_instances, huawei_get_ecs_instance, huawei_list_ecs_flavors, huawei_list_ecs_images, huawei_list_ecs_quotas, huawei_diagnose_ecs_create_failure, huawei_analyze_ecs_health, huawei_create_ecs_instance, huawei_start_ecs_instance, huawei_stop_ecs_instance, huawei_restart_ecs_instance, huawei_delete_ecs_instance, huawei_resize_ecs_instance, huawei_reinstall_ecs_os, huawei_reset_ecs_password, huawei_replace_ecs_keypair, huawei_bind_ecs_eip

huaweicloud/huawei-cloud-ges-graph

Provides access guide for Huawei Cloud Graph Database GES service. Covers Cypher queries, GQL queries, schema/label management, summary info queries, graph data editing and more. Use this skill when users want to operate Huawei Cloud graph database GES service via terminal.

huaweicloud/huawei-cloud-obs-website-host

Configure Huawei Cloud OBS static website hosting with Python SDK and a custom domain. Use when the user needs to enable or repair OBS website hosting, set index or error pages, expose an existing bucket for public website access through a custom domain, or connect that domain through Huawei Cloud DNS when Huawei manages the zone. Triggers include OBS static website hosting, website endpoint, index page, error page, public-read bucket website access, custom domain CNAME, Huawei Cloud DNS, setBucketWebsite. 中文触发词包括:OBS 静态网站托管、网站托管、自定义域名解析。

Skills associés