Skill de Subida a Huawei Cloud OBS
Resumen
Sube archivos o directorios locales a buckets de Huawei Cloud OBS, lista buckets de OBS con capacidad y número de objetos, y programa subidas periódicas mediante crontab. Las operaciones de subida usan obsutil; el listado y estadísticas de buckets usan hcloud obs ls + métricas CES.
Principio de separación de herramientas:
- obsutil — Subida de archivos/directorios, sincronización de subidas programadas (herramienta principal de subida; la CLI hcloud no tiene soporte para PutObject)
- hcloud CLI — Listado de buckets mediante
hcloud obs ls(modo obsutil), estadísticas de capacidad/recuento de objetos mediantehcloud CES ShowMetricData - crontab / Programador de tareas — Tarea programada a nivel de SO para subida periódica (sin dependencia de procesos en segundo plano)
Arquitectura de seguridad:
- AK/SK nunca se leen, muestran ni imprimen en la conversación
- Las credenciales de obsutil son configuradas por el usuario en su terminal (nunca se solicitan en la conversación)
- Las operaciones de eliminación están estrictamente prohibidas (irreversibles); las operaciones fuera del alcance se rechazan con alternativas guiadas
- Para subidas de directorios, la decisión de preservar la estructura del directorio (
-flat) se toma según la respuesta explícita del cliente, nunca se asume - Cada subida (Tarea 2) y cada configuración de subida programada (Tarea 3) requiere la confirmación explícita del usuario antes de ejecutar el comando o la escritura en crontab
- El agente solo ejecuta los pasos descritos en este skill para el bucket y la ruta exactos especificados por el usuario; nunca realiza ninguna otra acción de OBS/CLI en nombre del usuario
⚠️ Aviso de transmisión de datos
- La subida transfiere archivos/directorios locales al almacenamiento en la nube remoto y los persiste allí. Antes de subir, informa claramente al usuario: "Subir
<ruta>transmitirá los datos al bucket de OBS<Bucket>y los almacenará en la nube." Si el usuario no tenía esta intención, detente antes de ejecutar.- Las subidas programadas envían datos repetidamente desde un directorio local a la nube en un horario recurrente. Advierta explícitamente al usuario de que los datos se transmitirán y persistirán de forma remota en cada ejecución.
- Revisa la ruta a subir antes de ejecutar; si la ruta es amplia (por ejemplo, un directorio de inicio) o contiene contenido inesperado, confirma el alcance con el usuario antes de subir.
⛔ Operaciones Prohibidas (Restricciones de Seguridad)
Este skill prohíbe estrictamente las siguientes operaciones, independientemente de las solicitudes del usuario. Las acciones prohibidas se describen semánticamente; no se proporcionan ejemplos de comandos destructivos.
| Operación Prohibida | Motivo |
|---|---|
| ❌ Eliminar un bucket | Irreversible; destruye todo el bucket y todos los objetos |
| ❌ Eliminar un objeto | Irreversible; los objetos eliminados no se pueden recuperar (a menos que el versionado esté habilitado) |
| ❌ Eliminación masiva de objetos | Irreversible; la eliminación masiva tiene un impacto amplio |
| ❌ Vaciar un bucket | Irreversible; elimina todos los objetos del bucket |
| ❌ Descargar un objeto | Este skill es solo de subida; la descarga es un flujo de trabajo separado |
| ❌ Crear un bucket | La creación de buckets tiene un skill dedicado con requisitos previos completos |
| ❌ Copiar un objeto entre buckets | La copia entre buckets está fuera del alcance de este skill |
| ❌ Modificar la configuración del ciclo de vida del bucket | La gestión de costos de almacenamiento es una tarea separada de configuración a nivel de bucket |
| ❌ Restaurar un objeto archivado | La restauración de archivos es un flujo de trabajo separado con modos de recuperación y TTL |
| ❌ Generar URL prefirmadas | El uso compartido temporal requiere firma SDK; no compatible con la subida por CLI |
| ❌ Modificar la ACL o la política del bucket | La gestión de permisos es una tarea de seguridad separada |
| ❌ Pedir al usuario que proporcione AK/SK directamente en la conversación | Las credenciales nunca deben aparecer en la conversación |
| ❌ Extraer AK/SK de los archivos de configuración de hcloud | Las credenciales están cifradas y no se pueden usar directamente |
| ❌ Omitir la verificación de credenciales de obsutil antes de las operaciones de OBS | Las operaciones fallan sin credenciales configuradas |
❌ Usar -flat para subidas de directorios sin preguntar al cliente | -flat descarta la estructura del directorio; debe seguir la respuesta explícita del cliente |
| ❌ Adivinar la ruta local, el nombre del bucket o el prefijo de destino | Los parámetros requeridos deben ser proporcionados por el usuario |
Si un usuario solicita una operación de eliminación, debes rechazarla e informar: "Debido a las restricciones de seguridad, este skill no permite operaciones de eliminación (eliminar bucket/objeto/eliminación masiva/vaciar bucket). Utilice la consola de Huawei Cloud OBS u obsutil manualmente."
Si un usuario solicita una operación fuera del alcance, no intentes realizarla. Informa al usuario con la alternativa recomendada de la siguiente tabla:
| Operación | Alternativa recomendada |
|---|---|
| Descargar objeto | Usa obsutil cp obs://<Bucket>/<Key> <RutaLocal> manualmente, o la consola de OBS |
| Crear bucket | Usa el skill dedicado huawei-cloud-obs-bucket-create, o la consola de OBS |
| Copiar objeto | Usa hcloud OBS CopyObject manualmente, o la consola de OBS |
| Configuración de ciclo de vida | Usa la consola de OBS (Bucket > Ciclo de vida), o hcloud OBS SetBucketLifecycle |
| Restaurar objeto archivado | Usa obsutil restore obs://<Bucket>/<Key> manualmente, o la consola de OBS |
| URL prefirmada | Usa el SDK de Huawei Cloud (Java/Python/Go) para generar URL prefirmadas, o la consola de OBS |
| ACL/Política de bucket | Usa la consola de OBS (Bucket > Permisos), o hcloud OBS SetBucketAcl/SetBucketPolicy |
Arquitectura
Gestion de Subidas a Huawei Cloud OBS
├── Tarea 1: ListBucketsWithStats (Listar buckets con capacidad y número de objetos)
│ ├── 1a. hcloud obs ls: listar todos los buckets
│ ├── 1b. Métricas CES / API OBS: consultar capacidad y número de objetos del bucket
│ └── 1c. Informar tabla de estadísticas del bucket al usuario
├── Tarea 2: UploadFile (Subir archivo o directorio local al bucket de destino)
│ ├── 2a. Confirmar ruta local + nombre del bucket + prefijo de destino con el usuario
│ ├── 2b. Para directorio: preguntar al cliente si preservar la estructura del directorio (decidir -flat)
│ ├── 2c. Advertir que los datos persisten de forma remota + obtener confirmación explícita del usuario
│ ├── 2d. obsutil cp: archivo único (-flat) o directorio (-r, opcional -flat según respuesta del cliente)
│ └── 2e. Verificar resultado de la subida
└── Tarea 3: ScheduledUpload (Programar subida periódica del directorio local al bucket de destino)
├── 3a. Confirmar directorio local + bucket + prefijo + período de programación con el usuario
├── 3b. Preguntar al cliente si preservar la estructura del directorio (decidir -flat)
├── 3c. Advertir sobre la persistencia + obtener confirmación explícita del usuario
├── 3d. Generar script de subida obsutil (con/sin -flat según respuesta del cliente)
├── 3e. Configurar tarea programada en crontab / Programador de tareas
└── 3f. Verificar que la tarea programada está configurada
Requisitos Previos
Verificación de requisito previo 1/3: CLI de Huawei Cloud (hcloud / KooCLI) >= 3.2.0 requerida Ejecuta
hcloud versionpara verificar que la versión sea >= 3.2.0. Si no está instalada o la versión es demasiado baja, consulta references/cli-installation-guide.md para la guía de instalación.
hcloud version
Verificación de requisito previo 2/3: obsutil >= 5.5.0 requerido (para funciones de subida) La subida de archivos/directorios requiere la herramienta CLI obsutil de Huawei Cloud. Ejecuta
obsutil versionpara verificar que la versión sea >= 5.5.0. Si no está instalada, consulta references/cli-installation-guide.md para la guía de instalación.
obsutil version
Verificación de requisito previo 3/3: Configuración de credenciales de obsutil requerida
El módulo hcloud obs se asigna a obsutil internamente, que requiere configuración separada de AK/SK y Endpoint. Antes de realizar operaciones de OBS, debes verificar si las credenciales de obsutil están configuradas:
hcloud obs ls -limit=1Si la respuesta es
Please set ak, sk and endpoint in the configuration file!oInvalidAccessKeyId, las credenciales de obsutil no están configuradas.Resolución: Indica al usuario que configure las credenciales de obsutil en su propia terminal (no le pidas que proporcione AK/SK directamente en la conversación), con la advertencia de seguridad a continuación:
Las credenciales de obsutil no están configuradas. Ejecuta el siguiente comando en tu terminal para configurar (AK/SK se pueden obtener desde la página "Mis Credenciales" de la consola de Huawei Cloud): hcloud obs config -i=<TuAK> -k=<TuSK> -e=obs.<Región>.myhuaweicloud.com Ejemplo (región de Cantón): hcloud obs config -i=<TuAK> -k=<TuSK> -e=obs.cn-south-1.myhuaweicloud.com Endpoints comunes: 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 ⚠️ Advertencia de seguridad: poner AK/SK en la línea de comandos los expone al historial del shell y a los listados de procesos del SO. Prefiere la configuración interactiva (`hcloud configure`) o las variables de entorno (HW_ACCESS_KEY / HW_SECRET_KEY). Después de la configuración, limpia el historial del shell si se usó el comando en texto plano. Vuelve a intentarlo después de que la configuración esté completa.
⚠️ Requisitos de formato de parámetros de hcloud
Los comandos de la API de servicios en la nube de hcloud (KooCLI) (módulo en mayúsculas, p. ej.
hcloud CES ShowMetricData) deben usar el formato--param=valor(unido con signo igual); el formato separado por espacios no es compatible.✅ Correcto:
hcloud CES ShowMetricData --region=cn-south-1 --namespace=SYS.OBS❌ Incorrecto:
hcloud CES ShowMetricData --region cn-south-1Nota:
hcloud obs(minúsculas, modo obsutil) se asigna directamente a comandos de obsutil y usa el estilo de parámetros de obsutil (p. ej.hcloud obs ls,hcloud obs config -i=...); la regla--param=valorno aplica. No existe el comandohcloud OBS ListBuckets— usahcloud obs lspara listar buckets.
Autenticación
Reglas de seguridad (deben seguirse):
- Prohibido leer, mostrar o imprimir valores de AK/SK
- Prohibido pedir al usuario que ingrese AK/SK directamente en la conversación
- Prohibido usar
hcloud configure setpara pasar valores de credenciales en texto plano- Prohibido aceptar AK/SK proporcionados directamente por el usuario en la conversación
- Solo permitido leer credenciales de variables de entorno o archivos de configuración de CLI configurados
⚠️ Advertencia de exposición de credenciales (compartir con el usuario cuando se discuta la configuración de credenciales):
- Pasar AK/SK como argumentos de línea de comandos (p. ej.,
obsutil config -ak=... -sk=...ohcloud configure set --access-key-id=...) expone las credenciales al historial del shell, listados de procesos del SO, registros de auditoría, grabaciones de terminal y documentación copiada.- Prefiere la configuración interactiva (
hcloud configure) o las variables de entorno (HW_ACCESS_KEY/HW_SECRET_KEY).- Después de configurar mediante un comando en texto plano, limpia el historial del shell (
history -co elimina la línea ofensiva de~/.bash_history).- El archivo de configuración de credenciales de obsutil (p. ej.,
~/.obsutilconfig) debe tener permisos restringidos (p. ej.,600).⚠️ Importante: Manejo de credenciales proporcionadas por el usuario
Si un usuario intenta proporcionar AK/SK directamente (p. ej., "mi AK es xxx, SK es yyy"):
- Detente inmediatamente - No ejecutes ningún comando
- Rechaza cortésmente y devuelve el siguiente mensaje:
Por la seguridad de la cuenta, no proporciones el Access Key ID y Access Key Secret de Huawei Cloud directamente en la conversación. Utiliza uno de los siguientes métodos seguros para configurar las credenciales: Método 1: Configuración interactiva (recomendado) hcloud configure # Ingresa AK/SK cuando se solicite; las credenciales se almacenarán de forma segura en un archivo de configuración local Método 2: Configuración de variables de entorno export HW_ACCESS_KEY=<tu-access-key-id> export HW_SECRET_KEY=<tu-access-key-secret> Una vez completada la configuración, vuelve a intentar tu solicitud.- No continúes ejecutando ninguna operación de Huawei Cloud hasta que las credenciales estén configuradas
Verifica la configuración de la CLI:
hcloud configure listComprueba si la salida contiene una configuración válida (AK/SK, IAM, etc.).
Si no existen credenciales válidas, detente aquí.
Políticas de Permisos IAM
Asegúrate de que el usuario de IAM tenga los permisos necesarios. Consulta references/iam-policies.md para la tabla completa de permisos.
Permisos mínimos requeridos:
obs:bucket:list— Listar bucketsobs:bucket:get— Obtener atributos del bucket (capacidad, número de objetos)obs:object:get— Leer información de objetosobs:object:put— Subir objetos
Límites de permisos:
- Restricción de alcance: Este skill SOLO puede realizar las siguientes acciones de herramientas, y solo en los buckets/rutas especificados por el usuario después de la confirmación:
hcloud obs ls/obsutil ls— listar buckets y objetos para el alcance especificado por el usuariohcloud CES ShowMetricData/hcloud OBS GetBucketStorageInfo— leer capacidad / número de objetos del bucketobsutil cp— subir el archivo/directorio local confirmado al bucket confirmadocrontab(Linux/macOS) oschtasks(Windows) — escribir/eliminar la tarea de subida programada confirmada
- Todas las demás operaciones de CLI/herramientas (eliminar, descargar, copiar, crear bucket, modificar configuración, etc.) están estrictamente fuera del alcance y deben ser rechazadas.
- Debe detenerse si: faltan credenciales o son inválidas, el usuario rechaza cualquier confirmación, el bucket de destino no existe o la ruta local no existe.
- Acciones prohibidas: cualquier operación de eliminación, cualquier operación fuera del alcance listada anteriormente, modificar la lista de herramientas aquí, o ejecutar cualquier comando más allá del alcance confirmado.
Flujos de Trabajo Principales
Tarea 1: Listar Buckets con Capacidad y Número de Objetos
Lista buckets mediante obsutil, luego consulta la capacidad y el número de objetos del bucket utilizando métricas de capacidad de CES o la API de OBS.
⚠️ Separación de herramientas:
hcloud obs lspara listar,hcloud CES ShowMetricDatapara estadísticas
hcloud obs ls: listar todos los buckets (modo obsutil; sin parámetro--region— la región se establece mediantehcloud obs config -e=...)hcloud CES ShowMetricData/ API OBS: consultar la capacidad y el número de objetos de cada bucket