Huawei Cloud OBS Upload Skill
Übersicht
Lokale Dateien oder Verzeichnisse in Huawei Cloud OBS-Buckets hochladen, OBS-Buckets mit Kapazität und Objektanzahl auflisten und zeitgesteuerte Uploads per Crontab einrichten. Upload-Operationen verwenden obsutil; Bucket-Listen/Statistiken nutzen hcloud obs ls + CES-Metriken.
Trennungsprinzip der Werkzeuge:
- obsutil — Datei-/Verzeichnis-Upload, zeitgesteuerter Upload-Sync (Kernwerkzeug für Uploads; die hcloud CLI unterstützt kein PutObject)
- hcloud CLI — Bucket-Listen via
hcloud obs ls(obsutil-Modus), Bucket-Kapazität/Objektanzahl-Statistiken viahcloud CES ShowMetricData - crontab / Aufgabenplaner — OS-eigener Zeitplaner für periodische Uploads (keine Abhängigkeit von Daemon-Prozessen)
Sicherheitsarchitektur:
- AK/SK werden niemals im Gespräch gelesen, ausgegeben oder gedruckt
- obsutil-Anmeldeinformationen werden vom Benutzer in seinem Terminal konfiguriert (niemals im Gespräch erfragt)
- Löschoperationen sind strikt verboten (irreversibel); nicht im Rahmen liegende Operationen werden mit geführten Alternativen abgelehnt
- Bei Verzeichnis-Uploads wird die Entscheidung, ob die Verzeichnisstruktur erhalten bleibt (
-flat), durch die explizite Antwort des Kunden getroffen, niemals angenommen - Jeder Upload (Aufgabe 2) und jede Einrichtung eines zeitgesteuerten Uploads (Aufgabe 3) erfordert die explizite Bestätigung des Benutzers, bevor entweder der Befehl oder der Crontab-Eintrag geschrieben wird
- Der Agent führt nur die in dieser Fähigkeit beschriebenen Schritte für den vom Benutzer angegebenen Bucket und Pfad aus; er führt niemals andere OBS/CLI-Aktionen im Namen des Benutzers durch
⚠️ Datenübertragungshinweis
- Upload überträgt lokale Dateien/Verzeichnisse in die entfernte Cloud-Speicherung und speichert sie dort dauerhaft. Informieren Sie den Benutzer vor dem Hochladen klar: "Das Hochladen von
<Pfad>überträgt die Daten an den OBS-Bucket<Bucket>und speichert sie in der Cloud." Wenn der Benutzer dies nicht beabsichtigt hat, brechen Sie vor der Ausführung ab.- Zeitgesteuerte Uploads übertragen Daten wiederholt von einem lokalen Verzeichnis nach einem wiederkehrenden Zeitplan in die Cloud. Warnen Sie den Benutzer explizit, dass die Daten bei jeder Ausführung übertragen und remote gespeichert werden.
- Überprüfen Sie den hochzuladenden Pfad vor der Ausführung; wenn der Pfad breit ist (z. B. ein Home-Verzeichnis) oder unerwartete Inhalte enthält, bestätigen Sie den Umfang mit dem Benutzer vor dem Hochladen.
⛔ Verbotene Operationen (Sicherheitseinschränkungen)
Diese Fähigkeit verbietet die folgenden Operationen strikt, unabhängig von Benutzeranfragen. Die verbotenen Aktionen werden semantisch beschrieben; es werden keine destruktiven Befehlsbeispiele gegeben.
| Verbotene Operation | Grund |
|---|---|
| ❌ Bucket löschen | Irreversibel; zerstört den gesamten Bucket und alle Objekte |
| ❌ Objekt löschen | Irreversibel; gelöschte Objekte können nicht wiederhergestellt werden (außer wenn die Versionierung aktiviert ist) |
| ❌ Objekte stapelweise löschen | Irreversibel; Stapellöschung hat große Auswirkungen |
| ❌ Bucket leeren | Irreversibel; entfernt alle Objekte im Bucket |
| ❌ Objekt herunterladen | Diese Fähigkeit ist nur für Uploads; Download ist ein separater Workflow |
| ❌ Bucket erstellen | Die Bucket-Erstellung hat eine eigene Fähigkeit mit vollständigen Voraussetzungen |
| ❌ Objekt zwischen Buckets kopieren | Bucket-übergreifendes Kopieren liegt außerhalb des Rahmens dieser Fähigkeit |
| ❌ Lebenszykluskonfiguration des Buckets ändern | Speicherkostenmanagement ist eine separate Bucket-Konfigurationsaufgabe |
| ❌ Archiviertes Objekt wiederherstellen | Die Wiederherstellung von Archiven ist ein separater Workflow mit Abrufmodi und TTL |
| ❌ Vorsignierte URLs generieren | Temporäres Teilen erfordert SDK-Signierung; wird vom CLI-Upload nicht unterstützt |
| ❌ Bucket-ACL oder Bucket-Richtlinie ändern | Berechtigungsmanagement ist eine separate Sicherheitsaufgabe |
| ❌ Benutzer bitten, AK/SK direkt im Gespräch anzugeben | Anmeldeinformationen dürfen niemals im Gespräch erscheinen |
| ❌ AK/SK aus hcloud-Konfigurationsdateien extrahieren | Anmeldeinformationen sind verschlüsselt und können nicht direkt verwendet werden |
| ❌ Obsutil-Anmeldeinformationsprüfung vor OBS-Operationen überspringen | Operationen schlagen ohne konfigurierte Anmeldeinformationen fehl |
❌ -flat für Verzeichnis-Uploads verwenden, ohne den Kunden zu fragen | -flat verwirft die Verzeichnisstruktur; muss der expliziten Antwort des Kunden folgen |
| ❌ Lokalen Pfad, Bucket-Namen oder Zielpräfix erraten | Erforderliche Parameter müssen vom Benutzer bereitgestellt werden |
Wenn ein Benutzer eine Löschoperation anfordert, müssen Sie ablehnen und mitteilen: "Aus Sicherheitsgründen erlaubt diese Fähigkeit keine Löschoperationen (Bucket/Objekt löschen, stapelweises Löschen, Bucket leeren). Bitte verwenden Sie die Huawei Cloud OBS-Konsole oder obsutil manuell."
Wenn ein Benutzer eine nicht im Rahmen liegende Operation anfordert, versuchen Sie nicht, sie auszuführen. Informieren Sie den Benutzer mit der empfohlenen Alternative aus der folgenden Tabelle:
| Operation | Empfohlene Alternative |
|---|---|
| Objekt herunterladen | Verwenden Sie obsutil cp obs://<Bucket>/<Key> <LokalerPfad> manuell oder die OBS-Konsole |
| Bucket erstellen | Verwenden Sie die spezielle Fähigkeit huawei-cloud-obs-bucket-create oder die OBS-Konsole |
| Objekt kopieren | Verwenden Sie hcloud OBS CopyObject manuell oder die OBS-Konsole |
| Lebenszykluskonfiguration | Verwenden Sie die OBS-Konsole (Bucket > Lebenszyklus) oder hcloud OBS SetBucketLifecycle |
| Archiviertes Objekt wiederherstellen | Verwenden Sie obsutil restore obs://<Bucket>/<Key> manuell oder die OBS-Konsole |
| Vorsignierte URL | Verwenden Sie das Huawei Cloud SDK (Java/Python/Go) zum Generieren vorsignierter URLs oder die OBS-Konsole |
| Bucket-ACL/Richtlinie | Verwenden Sie die OBS-Konsole (Bucket > Berechtigungen) oder hcloud OBS SetBucketAcl/SetBucketPolicy |
Architektur
Huawei Cloud OBS Upload Management
├── Aufgabe 1: ListBucketsWithStats (Buckets mit Kapazität und Objektanzahl auflisten)
│ ├── 1a. hcloud obs ls: alle Buckets auflisten
│ ├── 1b. CES-Metriken / OBS-API: Bucket-Kapazität und Objektanzahl abfragen
│ └── 1c. Bucket-Statistiktabelle dem Benutzer melden
├── Aufgabe 2: UploadFile (Lokale Datei oder Verzeichnis in Ziel-Bucket hochladen)
│ ├── 2a. Lokalen Pfad + Bucket-Namen + Zielpräfix mit Benutzer bestätigen
│ ├── 2b. Bei Verzeichnis: Kunden fragen, ob die Verzeichnisstruktur erhalten bleiben soll (-flat entscheiden)
│ ├── 2c. Warnen, dass Daten remote gespeichert werden + explizite Benutzerbestätigung einholen
│ ├── 2d. obsutil cp: einzelne Datei (-flat) oder Verzeichnis (-r, optional -flat je nach Kundenantwort)
│ └── 2e. Upload-Ergebnis überprüfen
└── Aufgabe 3: ScheduledUpload (Zeitgesteuerten Upload eines lokalen Verzeichnisses in Ziel-Bucket einrichten)
├── 3a. Lokales Verz. + Bucket + Präfix + Zeitplan mit Benutzer bestätigen
├── 3b. Kunden fragen, ob die Verzeichnisstruktur erhalten bleiben soll (-flat entscheiden)
├── 3c. Über Persistenz warnen + explizite Benutzerbestätigung einholen
├── 3d. Obsutil-Upload-Skript generieren (mit/ohne -flat gemäß Kundenantwort)
├── 3e. Crontab / Aufgabenplaner eintragen
└── 3f. Zeitgesteuerte Aufgabe überprüfen
Voraussetzungen
Voraussetzungsprüfung 1/3: Huawei Cloud CLI (hcloud / KooCLI) >= 3.2.0 erforderlich Führen Sie
hcloud versionaus, um die Version >= 3.2.0 zu überprüfen. Falls nicht installiert oder die Version zu niedrig ist, siehe references/cli-installation-guide.md für die Installationsanleitung.
hcloud version
Voraussetzungsprüfung 2/3: obsutil >= 5.5.0 erforderlich (für Upload-Funktionen) Datei-/Verzeichnis-Upload erfordert das Huawei Cloud obsutil CLI-Tool. Führen Sie
obsutil versionaus, um die Version >= 5.5.0 zu überprüfen. Falls nicht installiert, siehe references/cli-installation-guide.md für die Installationsanleitung.
obsutil version
Voraussetzungsprüfung 3/3: obsutil-Anmeldeinformationskonfiguration erforderlich
Das hcloud obs-Modul verwendet intern obsutil, das eine separate AK/SK- und Endpunkt-Konfiguration erfordert. Bevor OBS-Operationen durchgeführt werden, müssen Sie prüfen, ob obsutil-Anmeldeinformationen konfiguriert sind:
hcloud obs ls -limit=1Wenn die Antwort
Please set ak, sk and endpoint in the configuration file!oderInvalidAccessKeyIdlautet, sind obsutil-Anmeldeinformationen nicht konfiguriert.Lösung: Leiten Sie den Benutzer an, obsutil-Anmeldeinformationen in seinem eigenen Terminal zu konfigurieren (fragen Sie den Benutzer nicht, AK/SK direkt im Gespräch anzugeben), mit der folgenden Sicherheitswarnung:
obsutil-Anmeldeinformationen sind nicht konfiguriert. Bitte führen Sie den folgenden Befehl in Ihrem Terminal aus, um zu konfigurieren (AK/SK können auf der Seite "Meine Anmeldeinformationen" der Huawei Cloud-Konsole bezogen werden): hcloud obs config -i=<IhrAK> -k=<IhrSK> -e=obs.<Region>.myhuaweicloud.com Beispiel (Region Guangzhou): hcloud obs config -i=<IhrAK> -k=<IhrSK> -e=obs.cn-south-1.myhuaweicloud.com Übliche Endpunkte: 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 ⚠️ Sicherheitswarnung: Die Angabe von AK/SK in der Befehlszeile setzt sie dem Shell-Verlauf und Betriebssystem-Prozesslisten aus. Bevorzugen Sie die interaktive Konfiguration (`hcloud configure`) oder Umgebungsvariablen (HW_ACCESS_KEY / HW_SECRET_KEY). Löschen Sie nach der Konfiguration Ihren Shell-Verlauf, wenn der Klartextbefehl verwendet wurde. Wiederholen Sie den Vorgang nach Abschluss der Konfiguration.
⚠️ hcloud Parameterformat-Anforderungen
hcloud (KooCLI) Cloud-Service-API-Befehle (Großbuchstaben-Modul, z. B.
hcloud CES ShowMetricData) müssen das Format--param=wertverwenden (mit Gleichheitszeichen verbunden); das durch Leerzeichen getrennte Format wird nicht unterstützt.✅ Richtig:
hcloud CES ShowMetricData --region=cn-south-1 --namespace=SYS.OBS❌ Falsch:
hcloud CES ShowMetricData --region cn-south-1Hinweis:
hcloud obs(Kleinbuchstaben, obsutil-Modus) bildet direkt obsutil-Befehle ab und verwendet den obsutil-Parameterstil (z. B.hcloud obs ls,hcloud obs config -i=...); die--param=wert-Regel gilt nicht. Es gibt keinen Befehlhcloud OBS ListBuckets– verwenden Siehcloud obs ls, um Buckets aufzulisten.
Authentifizierung
Sicherheitsregeln (müssen befolgt werden):
- Verboten, AK/SK-Werte zu lesen, zurückzugeben oder zu drucken
- Verboten, den Benutzer aufzufordern, AK/SK direkt im Gespräch einzugeben
- Verboten,
hcloud configure setzu verwenden, um Klartext-Anmeldeinformationen zu übergeben- Verboten, AK/SK zu akzeptieren, die vom Benutzer direkt im Gespräch bereitgestellt werden
- Nur erlaubt, Anmeldeinformationen aus Umgebungsvariablen oder konfigurierten CLI-Konfigurationsdateien zu lesen
⚠️ Warnung zur Offenlegung von Anmeldeinformationen (teilen Sie dies dem Benutzer mit, wenn die Konfiguration von Anmeldeinformationen besprochen wird):
- Die Übergabe von AK/SK als Befehlszeilenargumente (z. B.
obsutil config -ak=... -sk=...oderhcloud configure set --access-key-id=...) setzt die Anmeldeinformationen dem Shell-Verlauf, Betriebssystem-Prozesslisten, Audit-Logs, Terminalaufzeichnungen und kopierter Dokumentation aus.- Bevorzugen Sie die interaktive Konfiguration (
hcloud configure) oder Umgebungsvariablen (HW_ACCESS_KEY/HW_SECRET_KEY).- Löschen Sie nach der Konfiguration über einen Klartextbefehl den Shell-Verlauf (
history -coder entfernen Sie die entsprechende Zeile aus~/.bash_history).- Die Anmeldeinformationskonfigurationsdatei von obsutil (z. B.
~/.obsutilconfig) sollte eingeschränkte Berechtigungen haben (z. B.600).⚠️ Wichtig: Umgang mit benutzerbereitgestellten Anmeldeinformationen
Wenn ein Benutzer versucht, AK/SK direkt anzugeben (z. B. "mein AK ist xxx, SK ist yyy"):
- Sofort anhalten - Keine Befehle ausführen
- Höflich ablehnen und die folgende Nachricht zurückgeben:
Aus Sicherheitsgründen geben Sie bitte keine Huawei Cloud Access Key ID und Access Key Secret direkt im Gespräch an. Bitte verwenden Sie eine der folgenden sicheren Methoden zum Konfigurieren von Anmeldeinformationen: Methode 1: Interaktive Konfiguration (empfohlen) hcloud configure # Geben Sie AK/SK wie aufgefordert ein; die Anmeldeinformationen werden sicher in einer lokalen Konfigurationsdatei gespeichert Methode 2: Umgebungsvariablen-Konfiguration export HW_ACCESS_KEY=<ihre-access-key-id> export HW_SECRET_KEY=<ihr-access-key-secret> Nach Abschluss der Konfiguration wiederholen Sie bitte Ihre Anfrage.- Fahren Sie nicht fort mit der Ausführung von Huawei Cloud-Operationen, bis Anmeldeinformationen konfiguriert sind
CLI-Konfiguration prüfen:
hcloud configure listÜberprüfen Sie, ob die Ausgabe eine gültige Konfiguration enthält (AK/SK, IAM usw.).
Wenn keine gültigen Anmeldeinformationen vorhanden sind, hier anhalten.
IAM-Berechtigungsrichtlinien
Stellen Sie sicher, dass der IAM-Benutzer über die erforderlichen Berechtigungen verfügt. Siehe references/iam-policies.md für die vollständige Berechtigungstabelle.
Mindestens erforderliche Berechtigungen:
obs:bucket:list— Buckets auflistenobs:bucket:get— Bucket-Attribute abrufen (Kapazität, Objektanzahl)obs:object:get— Objektinformationen lesenobs:object:put— Objekte hochladen
Berechtigungsgrenzen:
- Umfangsbeschränkung: Diese Fähigkeit darf NUR die folgenden Tool-Aktionen ausführen, und zwar nur für die vom Benutzer angegebenen Buckets/Pfade nach Bestätigung:
hcloud obs ls/obsutil ls— Buckets und Objekte für den vom Benutzer angegebenen Umfang auflistenhcloud CES ShowMetricData/hcloud OBS GetBucketStorageInfo— Bucket-Kapazität / Objektanzahl lesenobsutil cp— die bestätigte lokale Datei / das bestätigte Verzeichnis in den bestätigten Bucket hochladencrontab(Linux/macOS) oderschtasks(Windows) — die bestätigte zeitgesteuerte Upload-Aufgabe schreiben/entfernen
- Alle anderen CLI/Tool-Operationen (Löschen, Herunterladen, Kopieren, Bucket-Erstellung, Konfigurationsänderung usw.) liegen strikt außerhalb des Rahmens und müssen abgelehnt werden.
- Muss anhalten, wenn: Anmeldeinformationen fehlen oder ungültig sind, der Benutzer eine Bestätigung ablehnt, der Ziel-Bucket nicht existiert oder der lokale Pfad nicht existiert.
- Verbotene Aktionen: jede Löschoperation, jede nicht im Rahmen liegende oben aufgeführte Operation, Änderung der Werkzeugliste hier oder Ausführung eines Befehls über den bestätigten Umfang hinaus.
Kern-Workflows
Aufgabe 1: Buckets mit Kapazität und Objektanzahl auflisten
Buckets via obsutil auflisten, dann Bucket-Kapazität und Objektanzahl mithilfe von CES-Kapazitätsmetriken oder der OBS-API abfragen.
⚠️ Werkzeugtrennung:
hcloud obs lszum Auflisten,hcloud CES ShowMetricDatafür Statistiken
hcloud obs ls: alle Buckets auflisten (obsutil-Modus; kein--region-Parameter — die Region wird überhcloud obs config -e=...gesetzt)hcloud CES ShowMetricData/ OBS-API: Kapazität und Objektanzahl jedes Buckets abfragen