paramsx 1.1.5__tar.gz → 2.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,61 @@
1
+ # Changelog
2
+
3
+ ## 2.0.0
4
+
5
+ ### ⚠ Breaking change: hay que actualizar `~/.xsoft/paramsx_config.py` a mano
6
+
7
+ `parameter_list` **ya no es una lista de strings**: cada entrada es ahora un diccionario que declara su convención de naming. El formato antiguo no es compatible y ParamsX se niega a arrancar mostrando cómo migrarlo.
8
+
9
+ Antes (1.x):
10
+
11
+ ```python
12
+ "entornos": ["DEV", "PROD"],
13
+ "parameter_list": [
14
+ "/params1/xx",
15
+ "/params2/xx",
16
+ ]
17
+ ```
18
+
19
+ Ahora (2.0.0):
20
+
21
+ ```python
22
+ "entornos": ['dev', 'pre', 'prod'], # SIEMPRE en minúscula, lista canónica única
23
+ "parameter_list": [
24
+ {"path": "/common", "convencion": "min"},
25
+ {"path": "/rds", "convencion": "min"},
26
+ {"path": "/EMAIL", "convencion": "max"},
27
+ {"path": "/API/STA", "convencion": "max"},
28
+ ]
29
+ ```
30
+
31
+ Además:
32
+ - `entornos` se escribe **siempre en minúscula**. El entorno en mayúscula de las rutas `max` se deriva con `.upper()` de esa misma lista.
33
+ - Ya **no existe** `entornos_old`.
34
+ - Los ficheros temporales pasan a llamarse `parameters_dev.py` (antes `parameters_DEV.py`) al usar entornos en minúscula.
35
+
36
+ ### Añadido
37
+
38
+ - **Doble convención de naming en `parameter_list`.** Cada ruta declara `"convencion": "min"` o `"max"`:
39
+ - `min` (convención nueva): el entorno en minúscula se añade **al principio**. `/rds` + `dev` → `/dev/rds`.
40
+ - `max` (convención legacy): el entorno en mayúscula se inserta **tras el primer segmento**. `/API/STA` + `dev` → `/API/DEV/STA`; `/EMAIL` + `dev` → `/EMAIL/DEV`.
41
+ - **Opción 4 del menú: "Crear nuevo parámetro".** Pide ruta (siempre en convención `min`, forzada a minúscula), valor (texto plano o JSON, validado) y las tags obligatorias. Se crea con `Overwrite=False` para no machacar nada. No se puede crear un parámetro con la convención `max`.
42
+ - **Aviso de correlación de naming en RDS.** Al crear un parámetro de RDS se comprueba que exista su contraparte (`/{entorno}/common/rds/{nombre-servicio}` ↔ `/{entorno}/rds/{nombre-servicio}/...`) y se avisa si falta. Es un aviso, no bloquea.
43
+ - **Flag `abac` y tags obligatorias.** Con `abac = True`, el fichero exportado incluye un campo por tag (`tagApplication`, `tagEnvironment`, `tagOwner`, `tagProject`, `tagProduct`, `tagService`, `tagComponent`, `tagManagedBy`) con su valor actual en AWS. Estas 8 tags sostienen el control de acceso ABAC vía IAM de toda la cuenta. La lista vive en `tags_obligatorias`, en el propio fichero de configuración, para poder ampliarla sin tocar código. Con `abac = False` no aparecen tags en el fichero y no se valida nada (comportamiento 1.x).
44
+ - **Validación bloqueante por parámetro.** Al cargar con `abac = True`, si a un parámetro le falta cualquiera de las tags obligatorias no se sube ni su valor ni sus tags, y se indica qué falta y en qué `parameter_name`. El resto del lote se sube con normalidad. Cuando la carga queda a medias los ficheros no se borran y el backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo pendiente.
45
+ - **Round-trip de tags en la edición.** Los diffs de tags se detectan igual que los de valores (Nuevos / Modificados / Eliminados) y se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor, sin borrar ni recrear el parámetro. Vaciar el campo de una tag la borra en AWS. Los backups automáticos incluyen las tags.
46
+
47
+ ### Cambiado
48
+
49
+ - **Errores de permisos legibles.** `AccessDeniedException` se captura de forma específica y se muestra como `⚠ No tienes permisos para leer: /dev/rds — pídele a un admin que te dé acceso, o acota la ruta en tu parameter_list...`, sin traza de boto3. Cualquier otro error de AWS (ruta inexistente, throttling...) se propaga con su traza normal en lugar de quedar oculto tras un `except Exception`.
50
+ - Los cambios que solo afectan a tags ya no generan una versión nueva del valor del parámetro.
51
+ - Las pantallas de resultado son informes con scroll en vez de un mensaje centrado de 3 segundos.
52
+ - Las tags de sistema (`aws:*`) no se exportan ni se modifican. Las tags existentes que no estén en la lista obligatoria se conservan.
53
+ - `paramsx configure` copia la plantilla que trae el paquete, así que el fichero generado y la documentación no se pueden desincronizar.
54
+ - La configuración se valida antes de entrar en la interfaz curses, con los errores impresos en la terminal.
55
+ - `paramsx --help` documenta las opciones del menú y las claves de configuración.
56
+
57
+ ### Corregido
58
+
59
+ - El menú de backup ya no muta `parameter_list` para añadir y quitar sus dos opciones extra.
60
+ - El backup "Total parámetros listados" ya no se interrumpe cuando una ruta no tiene parámetros en algún entorno o no es accesible: continúa con el resto y avisa al final.
61
+ - Los mensajes largos ya no rompen la pantalla: se ajustan al ancho del terminal.
File without changes
@@ -0,0 +1,3 @@
1
+ include paramsx/paramsx_config.py
2
+ include paramsx/post_install.py
3
+ include CHANGELOG.md
paramsx-2.0.0/PKG-INFO ADDED
@@ -0,0 +1,361 @@
1
+ Metadata-Version: 2.4
2
+ Name: paramsx
3
+ Version: 2.0.0
4
+ Summary: Librería para gestionar y respaldar parámetros de AWS SSM de manera sencilla y eficiente.
5
+ Home-page: https://github.com/pistatxos/paramsx
6
+ Author: Mariox
7
+ Author-email: info@tomonota.net
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: boto3
11
+ Requires-Dist: windows-curses; platform_system == "Windows"
12
+ Dynamic: author
13
+ Dynamic: author-email
14
+ Dynamic: description
15
+ Dynamic: description-content-type
16
+ Dynamic: home-page
17
+ Dynamic: license-file
18
+ Dynamic: requires-dist
19
+ Dynamic: summary
20
+
21
+ # ParamsX
22
+
23
+ ParamsX es una herramienta diseñada para gestionar y organizar parámetros de AWS SSM de manera sencilla y eficiente.
24
+
25
+ ## ⚠ Breaking change en la versión 2.0.0
26
+
27
+ Si vienes de la 1.x tienes que **actualizar a mano tu `~/.xsoft/paramsx_config.py`**: `parameter_list` ya no es una lista de strings, ahora cada entrada es un diccionario con su convención de naming. La versión antigua **no es compatible** y ParamsX se niega a arrancar mostrando cómo migrarla. Detalle completo en el [CHANGELOG](CHANGELOG.md).
28
+
29
+ ### Estructura Recomendada
30
+ La convención de naming es de 5 niveles, donde los últimos segmentos son opcionales según el caso:
31
+
32
+ ```
33
+ /{entorno}/{servicio}/{nombre-servicio}/{servicio-adjunto}/{definición}
34
+ ```
35
+
36
+ - `{entorno}`: SIEMPRE en minúscula (`dev`, `pre`, `prod`) y SIEMPRE el primer segmento, tanto en parámetros comunes como privados.
37
+ - `{servicio}`: la categoría. Puede ser `common` (lectura por defecto para todo el equipo) o el nombre real del servicio (`rds`, `api`, `email`...).
38
+ - `{definición}`: libre y descriptivo, no afecta a la lógica de permisos.
39
+
40
+ Ejemplos:
41
+ ```
42
+ /dev/api/multiapi/bbdd
43
+ /dev/email/users
44
+ /dev/common/email/users
45
+ /dev/common/rds/cee-dev
46
+ /dev/rds/cee-dev/api/alertas-premium
47
+ /dev/api/alertas-premium/encryption_key
48
+ /dev/api/sta/auth/jwt_secret
49
+ ```
50
+
51
+ Ventajas:
52
+ - Claridad: Fácil identificación de parámetros por entorno, servicio y componente.
53
+ - Escalabilidad: Crecimiento estructurado de la configuración.
54
+ - Permisos limpios: como el entorno va siempre en primera posición, `/{entorno}/common/*` es un prefijo puro y seguro para dar acceso de lectura por defecto a todo el equipo desde IAM. El acceso a los valores privados se controla por **tags** (ABAC), no por ruta.
55
+
56
+ #### Correlación de naming en RDS
57
+ En RDS, el segmento `{nombre-servicio}` del parámetro común debe coincidir **exactamente** con el del privado: es la clave que correlaciona `host/port/database` (común) con `user/password` (privado) al construir la conexión completa.
58
+
59
+ ```
60
+ /dev/common/rds/cee-dev -> host / port / database
61
+ /dev/rds/cee-dev/api/alertas -> user / password
62
+ ```
63
+
64
+ Al crear un parámetro con la opción 4, ParamsX comprueba que exista la contraparte y **avisa** si no la encuentra. Es solo un aviso: no bloquea la creación.
65
+
66
+ ### ¿Cómo funciona?
67
+ Al ejecutar ```paramsx``` desde la terminal, accedes a un menú interactivo con estas opciones principales:
68
+
69
+ 1. Leer parámetros
70
+ - Navega por la lista de parámetros configurada en tu archivo de configuración y selecciona cuál descargar.
71
+ - Elige el entorno deseado (por ejemplo, dev o prod).
72
+ - Archivos generados:
73
+ - parameters_dev.py o parameters_prod.py → Edita estos archivos para modificar, añadir o eliminar parámetros (valores y tags).
74
+ - parameters_dev_backup.py → Respaldo automático del archivo descargado, incluidas las tags.
75
+ Los archivos se crean en la misma ruta desde donde ejecutas paramsx, evitando movernos innecesariamente entre carpetas.
76
+ - Si tu rol IAM no tiene permisos sobre la ruta configurada, verás un mensaje claro en lugar de una traza de boto3:
77
+ ```
78
+ ⚠ No tienes permisos para leer: /dev/rds — pídele a un admin que te dé acceso, o acota
79
+ la ruta en tu parameter_list a algo más específico (ej. /dev/rds/<sub-ruta>).
80
+ ```
81
+
82
+ 2. Comparar y actualizar parámetros
83
+ - Una vez finalizados los ajustes en los parámetros descargados, selecciona esta opción.
84
+ - El programa pedirá el entorno correspondiente y realizará una comparación detallada, tanto de valores como de tags:
85
+ - Nuevos: Parámetros que serán añadidos.
86
+ - Modificados: Parámetros existentes cuyo valor y/o tags serán actualizados.
87
+ - Eliminados: Parámetros que serán borrados de AWS.
88
+ Revisa los cambios antes de confirmar. Una vez completada la operación, los archivos temporales serán eliminados automáticamente para mantener el entorno limpio.
89
+
90
+ 3. Crear backups
91
+ - Realiza copias de seguridad de los parámetros (valores y tags), eligiendo entre:
92
+ - Parámetros de un entorno específico.
93
+ - Todos los parámetros configurados en tu lista.
94
+ - Opcional: Descarga de todos los parámetros almacenados en tu cuenta de AWS.
95
+ Esto te permitirá mantener respaldos seguros o realizar migraciones/reorganizaciones según sea necesario.
96
+
97
+ 4. Crear nuevo parámetro
98
+ - Crea un parámetro desde cero sin salir de la herramienta. Te pedirá, en este orden:
99
+ - La ruta completa, **siempre en convención `min`** (entorno primero y todo en minúscula: se fuerza automáticamente).
100
+ - El valor: texto plano o JSON en una línea (por ejemplo `{"host": "x", "user": "y", "pass": "z"}`), que se valida antes de continuar.
101
+ - Las tags obligatorias, si tienes `abac = True`.
102
+ - No se puede crear un parámetro nuevo con la convención `max`: esa convención existe solo para seguir leyendo y editando los paths legacy.
103
+ - Antes de subirlo verás una pantalla de confirmación con la ruta, el valor y las tags. El parámetro se crea con `Overwrite=False`, así que nunca machaca uno existente.
104
+ - Tras crearlo aparecerá la próxima vez que leas la ruta correspondiente de tu `parameter_list`.
105
+
106
+ ### Requisitos
107
+ ParamsX utiliza boto3 para interactuar con AWS. Asegúrate de tener configuradas tus credenciales de AWS antes de usarlo.
108
+
109
+ Te interesa? pues sigue leyendo y explico como instalarlo.
110
+
111
+
112
+ ## Instalación
113
+
114
+ Para instalar ParamsX, utiliza el comando:
115
+
116
+ ```pip install paramx```
117
+
118
+ ### Configuración inicial
119
+ Después de instalar el paquete, es necesario configurarlo antes de usarlo. Ejecuta:
120
+
121
+ ``` paramsx configure ```
122
+
123
+ Este comando creará automáticamente una carpeta de configuración en tu directorio de usuario:
124
+
125
+ - Windows: C:\Users\<tu_usuario>\.xsoft
126
+ - Linux/MacOS: /home/<tu_usuario>/.xsoft
127
+
128
+ Dentro de esta carpeta, encontrarás el archivo paramsx_config.py. Este archivo contiene la configuración inicial que debes ajustar según tu entorno.
129
+
130
+ Ejemplo del contenido de paramsx_config.py:
131
+
132
+ ```python
133
+ ## Configuraciones ParamsX
134
+
135
+ configuraciones = {
136
+ "profile_name": "default", # Cambiar por el nombre de tu perfil en ~/.aws/credentials
137
+ "region_name": "eu-south-2", # Cambiar por tu región de AWS
138
+ "entornos": ['dev', 'pre', 'prod'], # SIEMPRE en minúscula, es la lista canónica única
139
+ "parameter_list": [
140
+ {"path": "/common", "convencion": "min"},
141
+ {"path": "/rds", "convencion": "min"},
142
+ {"path": "/api", "convencion": "min"},
143
+ {"path": "/EMAIL", "convencion": "max"},
144
+ {"path": "/API/STA", "convencion": "max"},
145
+ ]
146
+ }
147
+
148
+ abac = True
149
+
150
+ tags_obligatorias = [
151
+ "Application", "Environment", "Owner", "Project",
152
+ "Product", "Service", "Component", "ManagedBy",
153
+ ]
154
+ ```
155
+ Nota: Si el archivo paramsx_config.py ya existe, no será sobrescrito durante la instalación para proteger las configuraciones personalizadas.
156
+
157
+ ### La doble convención de naming: `min` y `max`
158
+
159
+ Durante la transición a la convención nueva conviven dos formas de construir la ruta. Cada entrada de `parameter_list` declara la suya, y **la diferencia no es solo el case: también cambia la posición donde se inserta el entorno**.
160
+
161
+ | convencion | Qué hace | Ejemplo con entorno `dev` |
162
+ |---|---|---|
163
+ | `min` | Convención nueva. Añade el entorno en **minúscula al principio** de la ruta. | `/rds` → `/dev/rds` |
164
+ | `max` | Convención legacy. Inserta el entorno en **mayúscula tras el primer segmento**. | `/API/STA` → `/API/DEV/STA` |
165
+ | `max` | Con un solo segmento queda al final. | `/EMAIL` → `/EMAIL/DEV` |
166
+
167
+ Ya **no existe** la lista `entornos_old`: el entorno en mayúscula de las rutas `max` se deriva con `.upper()` de la misma lista canónica `entornos`, que se escribe siempre en minúscula.
168
+
169
+ Ejemplo completo de una `parameter_list` migrada, mezclando rutas nuevas y legacy:
170
+
171
+ ```python
172
+ "parameter_list": [
173
+ {"path": "/common", "convencion": "min"},
174
+ {"path": "/rds", "convencion": "min"},
175
+ {"path": "/api", "convencion": "min"},
176
+ {"path": "/INFRA", "convencion": "max"},
177
+ {"path": "/API/STA", "convencion": "max"},
178
+ {"path": "/API/p15", "convencion": "max"},
179
+ {"path": "/API/MULTIAPI", "convencion": "max"},
180
+ {"path": "/APP/Alertas", "convencion": "max"},
181
+ {"path": "/API/ALERTAS", "convencion": "max"},
182
+ {"path": "/APP/Eter", "convencion": "max"},
183
+ {"path": "/API/GIS", "convencion": "max"},
184
+ {"path": "/API/PANGEA", "convencion": "max"},
185
+ {"path": "/BUCKETS", "convencion": "max"},
186
+ {"path": "/EMAIL", "convencion": "max"},
187
+ {"path": "/INFERENCIAS/TASA_DMI", "convencion": "max"},
188
+ {"path": "/IP", "convencion": "max"},
189
+ {"path": "/TASA", "convencion": "max"},
190
+ {"path": "/CEE/CEXGEN", "convencion": "max"},
191
+ ]
192
+ ```
193
+
194
+ Sobre mayúsculas y minúsculas: ParamsX **no renombra ni fuerza el case de los parámetros que ya existen**, los lee y edita tal cual estén según la convención que hayas indicado para esa ruta. Los parámetros **nuevos** que crea la herramienta (opción 4) van siempre en convención `min`.
195
+
196
+ ### Cómo acotar tu parameter_list (recomendación)
197
+
198
+ `parameter_list` es solo tu vista de trabajo: **la seguridad real la impone IAM, no este fichero**. La recomendación de uso es:
199
+
200
+ - **Admins**: pueden configurar rutas raíz amplias, por ejemplo `{"path": "/rds", "convencion": "min"}` → `/dev/rds`.
201
+ - **Usuarios normales**: conviene acotar la ruta a lo que su rol IAM tiene realmente autorizado, por ejemplo `{"path": "/rds/cee-dev/api", "convencion": "min"}` → `/dev/rds/cee-dev/api`.
202
+
203
+ Si configuras una ruta más amplia que tus permisos, no pasa nada grave: ParamsX te avisará con un mensaje claro de acceso denegado en vez de una traza de boto3. Pero afinar la ruta te ahorra el error.
204
+
205
+ ### Tags obligatorias y el flag `abac`
206
+
207
+ El control de acceso a los valores privados de la cuenta va por **tags IAM** (condición `aws:ResourceTag/${TagKey}` sobre `GetParameter`), no por restricción de path — la única excepción es `/{entorno}/common/*`, que se concede por prefijo de ruta. Por eso estas 8 tags son el mínimo no negociable: son las que sostienen todo el modelo ABAC de la cuenta AWS.
208
+
209
+ ```
210
+ Application, Environment, Owner, Project, Product, Service, Component, ManagedBy
211
+ ```
212
+
213
+ La lista vive en `tags_obligatorias`, dentro de tu propio `paramsx_config.py`, para poder ampliarla sin tocar código.
214
+
215
+ El flag `abac` decide si ParamsX gestiona tags:
216
+
217
+ - **`abac = True`**: al leer parámetros, el fichero exportado incluye un campo por tag con su valor actual en AWS (vacío si el parámetro es legacy y no la tiene). Al cargar, es **obligatorio** que las 8 tengan valor.
218
+ - **`abac = False`**: las tags no aparecen en el fichero exportado en absoluto y no se valida nada (comportamiento de la 1.x).
219
+
220
+ Formato del fichero exportado con `abac = True`:
221
+
222
+ ```python
223
+ parametros = [
224
+ {'parameter_name': '/dev/email/users',
225
+ 'parameter_value': """agpetrovici@stanalytics.es""",
226
+ 'tagApplication': "",
227
+ 'tagEnvironment': "",
228
+ 'tagOwner': "",
229
+ 'tagProject': "",
230
+ 'tagProduct': "",
231
+ 'tagService': "",
232
+ 'tagComponent': "",
233
+ 'tagManagedBy': "",
234
+ },
235
+ ]
236
+ ```
237
+
238
+ Este formato con tags **solo existe en el fichero temporal que genera ParamsX**: no se ve en la consola de AWS ni se persiste en ningún otro sitio. Tiene el mismo ciclo de vida que el resto del fichero (se genera, se edita, se compara, se aplica y se borra al confirmar).
239
+
240
+ Detalles del comportamiento con `abac = True`:
241
+
242
+ - La validación es **bloqueante y por parámetro**: si a uno le falta cualquiera de las 8 tags no se sube **ni su valor ni sus tags**, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
243
+ - Cuando una carga queda a medias, los ficheros `parameters_{entorno}.py` y su backup **no se borran**, para que corrijas lo que falta y vuelvas a cargar. El backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo que quedó pendiente.
244
+ - Si el parámetro ya existe y le faltan tags (creado antes de esta versión), se rellenan en este mismo flujo de edición, sin borrar ni recrear el parámetro.
245
+ - Los cambios de tags se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor. Vaciar el campo de una tag en el fichero equivale a borrarla en AWS.
246
+ - Las tags de sistema (`aws:*`) no se exportan ni se tocan. Las tags que ya existan en AWS y no estén en la lista obligatoria se conservan y se pueden editar.
247
+ - No hay forma de saltarse la validación salvo poner `abac = False` explícitamente en tu configuración.
248
+
249
+ #### Configuración manual del PATH
250
+ En algunos sistemas (especialmente en entornos corporativos como Windows), el PATH puede no configurarse automáticamente durante la instalación. Si ocurre esto, sigue los pasos según tu sistema operativo:
251
+
252
+ - En Windows
253
+ 1. Ve al Panel de control y busca: Editar las variables de usuario para <tu_usuario>.
254
+ 2. Añade una nueva entrada en las variables de usuario con el siguiente valor:
255
+ ```C:\Users\<tu_usuario>\AppData\Roaming\Python\Python<versión>\Scripts```
256
+ (Reemplaza <tu_usuario> por tu nombre de usuario y <versión> por la versión de Python, como 312 para Python 3.12).
257
+ 3. Guarda los cambios y reinicia tu terminal.
258
+
259
+ - En Linux/MacOS
260
+ 1. Abre tu terminal y edita el archivo de configuración de tu shell:
261
+ - Para bash: ~/.bashrc
262
+ - Para zsh: ~/.zshrc
263
+ 2. Añade la siguiente línea al final del archivo:
264
+ ```export PATH="$HOME/.local/bin:$PATH"```
265
+ 3. Guarda los cambios y recarga la configuración del shell ejecutando:
266
+ ```source ~/.bashrc # Para bash```
267
+ ```source ~/.zshrc # Para zsh```
268
+
269
+ Una vez instalado, verifica que el comando paramsx esté disponible ejecutando:
270
+ ```paramsx --help```
271
+
272
+
273
+ ## Modo de empleo
274
+ Ejecuta el comando principal desde la terminal:
275
+
276
+ ```paramsx```
277
+
278
+ Navega por el menú interactivo:
279
+
280
+ El programa mostrará un menú donde Podrás:
281
+ - Leer parámetros desde AWS SSM.
282
+ - Cargar y actualizar parámetros.
283
+ - Backup de parámetros.
284
+ - Crear un parámetro nuevo.
285
+
286
+ ### Leer Parámetros:
287
+ 1. Selecciona la opción "Leer parámetros" en el menú. La lista muestra cada ruta con su convención, por ejemplo `/rds [min]` o `/API/STA [max]`.
288
+ 2. Elige el prefijo y el entorno que deseas consultar.
289
+ 3. Los parámetros serán descargados y guardados en archivos como:
290
+ - parameters_dev.py
291
+ - parameters_dev_backup.py
292
+ ```Importante: Los archivos se generarán en la misma ruta desde donde ejecutes el comando paramsx```
293
+ 4. Edita el archivo parameters_{entorno}.py con tu software favorito. Con `abac = True` cada parámetro trae además sus 8 campos de tag para rellenar.
294
+
295
+ ### Cargar Parámetros:
296
+ 1. Modifica los archivos generados (parameters_dev.py).
297
+ 2. Usa la opción "Cargar parámetros desde archivo" para comparar los cambios.
298
+ 3. El programa mostrará una lista con los siguientes estados:
299
+ - Nuevos: Parámetros que se agregarán.
300
+ - Modificados: Parámetros existentes que se actualizarán (valor, tags o ambos).
301
+ - Eliminados: Parámetros que se eliminarán automáticamente de AWS SSM.
302
+ * Revisa los cambios antes de confirmar.
303
+ ```Importante: Una vez confirmados los cambios, los archivos parameters_dev.py y parameters_dev_backup.py se eliminarán automáticamente```
304
+ 4. Si algún parámetro se queda sin subir por faltarle tags obligatorias, los ficheros se conservan para que lo corrijas y vuelvas a cargar.
305
+
306
+ ### Crear un parámetro nuevo:
307
+ 1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
308
+ 2. Escribe la ruta completa en convención `min` (`/dev/...`): se fuerza a minúscula y se valida que el primer segmento sea el entorno.
309
+ 3. Escribe el valor: texto plano o JSON en una línea.
310
+ 4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido.
311
+ 5. Confirma en la pantalla de resumen. Si es un parámetro de RDS y falta su contraparte (común o privado), verás el aviso de correlación de naming ahí mismo.
312
+
313
+ ### Backup Parámetros:
314
+ 1. Backup de un rango específico:
315
+ Selecciona un prefijo y un entorno específico.
316
+ Se creará un archivo único con el respaldo de los parámetros de esa selección.
317
+ Ideal para respaldar y modificar parámetros de una aplicación o entorno en particular.
318
+ 2. Backup de todos los parámetros listados:
319
+ Genera un respaldo combinado de todos los prefijos definidos en tu configuración (parameter_list) y sus entornos asociados.
320
+ Se crea un archivo total_listed_parameters_backup.py que contiene los parámetros organizados.
321
+ 3. Backup de todos los parámetros de la cuenta de AWS:
322
+ Lee todos los parámetros de AWS SSM desde la raíz (/).
323
+ Se crea un archivo all_parameters_backup.py con el respaldo completo de la cuenta.
324
+ Nota: Este proceso puede tardar dependiendo de la cantidad de parámetros almacenados.
325
+
326
+
327
+ ### Notas Adicionales
328
+ - Seguridad:
329
+ Los parámetros se manejan como SecureString para garantizar que la información sensible esté cifrada. Los permisos los impone IAM: `parameter_list` solo decide qué rutas intenta leer la herramienta.
330
+
331
+ - Errores:
332
+ Los accesos denegados por IAM se muestran como un aviso legible. Cualquier otro error de AWS (ruta inexistente, throttling...) se propaga tal cual para que puedas diagnosticarlo.
333
+
334
+ - Modificar todos los parámetros actuales:
335
+ ParamsX ha sido diseñado para trabajar fácilmente con entornos y listas de parámetros bien organizados. Sin embargo, si necesitas realizar ajustes masivos a tus parámetros, puedes aprovechar la funcionalidad de backup completo para modificar y reorganizar todos tus parámetros cómodamente.
336
+
337
+ Pasos recomendados para modificar parámetros en masa:
338
+ 1. Crea un backup completo:
339
+ Usa la opción 3 del menú y selecciona "Todos los parámetros de AWS" para generar un archivo de respaldo con todos tus parámetros.
340
+ El archivo generado será:
341
+ - all_parameters_backup.py
342
+ 2. Duplica y renombra el archivo:
343
+ Cambia el nombre del archivo de backup para que quede acorde a tu entorno:
344
+ - parameters_dev.py
345
+ - parameters_dev_backup.py
346
+ 3. Modifica los parámetros:
347
+ Edita el archivo parameters_dev.py según tus necesidades. Puedes añadir, modificar o eliminar parámetros según el entorno.
348
+ 4. Carga los nuevos parámetros:
349
+ Selecciona la opción "Cargar parámetros desde archivo" y elige el entorno dev.
350
+ 5. Revisa los cambios:
351
+ El programa te mostrará una lista detallada de los cambios:
352
+ - Nuevos: Parámetros que se agregarán.
353
+ - Modificados: Parámetros existentes que serán actualizados.
354
+ - Eliminados: Parámetros que se eliminarán de AWS SSM.
355
+ 6. Confirma la carga:
356
+ Una vez revisados los cambios, confirma para aplicar los ajustes en AWS SSM.
357
+
358
+
359
+ ## Licencia
360
+ ParamsX se distribuye bajo la licencia MIT, lo que significa que puedes usarlo libremente, modificarlo y adaptarlo a tus necesidades.
361
+ ```Nota: No hay responsabilidad alguna en posibles pérdidas de datos o configuraciones incorrectas. Por favor, asegúrate de revisar cuidadosamente los cambios antes de confirmarlos.```