Novedades de 0.17.0¶
En desarrollo: SDK Python rayito 0.17.0, SDK TypeScript rayito
0.17.0 y rayd 0.17.0.
0.17.0 hace que una flota de agentes se pueda reconectar sólo con su
nombre, desde cualquier proceso, y que se comporte igual que la que se
desplegó: mismas VMs, mismas pasarelas y el escalado real en status. Además
corrige varios fallos del despliegue del agente: URLs con credenciales en los
logs del host, --create-secret con presets y el prefijo del secreto, la
imagen rayito-base-caps que había que publicar a mano y OpenCode sin fichero
de proyecto.
Conectar con un proyecto explícito (AgentFleet.connect(nombre, project=...))
sigue funcionando igual que en 0.16 y no hace ninguna llamada nueva.
La receta de la flota¶
Tras arrancar la flota de MicroVMs, deploy_agent() y rayito agent deploy
guardan su receta en Parameter Store (/rayito/agents/<nombre>/recipe):
el proyecto tras las banderas, la versión de la imagen, los presets de las
pasarelas y el escalado. Sólo lleva nombres de secretos, nunca valores ni el
access token.
FleetStatus.scaling_source(scalingSource) dice de dónde sale el escalado:explicit,project,recipeodefault. Sin proyecto ni receta,rayito agent statusya no inventa unmin 1, max 1.stop()borra la receta que guardó o leyó;--keep-recipela conserva.- Un fallo al guardarla es un aviso con código, nunca un despliegue fallido.
Coste y activación
Es la única función encendida por defecto (ADR-034): un parámetro
SecureString estándar no cuesta y cada escritura o lectura es una
petición de KMS dentro de la capa gratuita (después, $0,03 por 10 000).
Se apaga con AgentDeployOptions(save_recipe=False) (saveRecipe: false,
--no-save-recipe). Detalle e IAM en
La receta de la flota.
Plazas calientes con sus pasarelas¶
Una flota reconectada en otro proceso abría una plaza caliente sin las
pasarelas del proyecto, y el agente arrancaba sin la pasarela del modelo. Ahora
la flota las abre al tomar la plaza, con el mismo camino que
SandboxPool.take(gateways=), y si no puede, sustituye la plaza. Ya no hace
falta desplegar con --warm 0.
Plazas calientes y pasarelas.
--scale-in-after y renovación de la clave de Bedrock¶
rayito agent deploy --scale-in-after SECONDS(AgentDeployOptions.scale_in_after_seconds,scaleInAfterMs) fija la inactividad tras la que un VM por encima demin_vmsse termina.- La reducción por fin ocurre. Hasta 0.16 era un no-op: los VMs de la
flota se creaban sin
max_lifetime/on_timeoutyraydrechazaba elset_timeoutque termina un VM sobrante (el aviso «no se pudo acotar la vida de un VM sobrante»). Ahora una flota que puede crecer (max_vms > min_vms) crea todos sus VMs y plazas calientes con plazo lógico en modokill, yPoolConfigganamax_lifetimeyon_timeoutopcionales. Una flota de tamaño fijo se crea como en 0.16. Los VMs creados por 0.16 no se reducen: vuelve a desplegar. Reducir, suspender y reiniciar. --renew-gateway-keys(renew_gateway_keys,renewGatewayKeys), apagada por defecto, renueva una clave de corta duración de Bedrock en las pasarelas con presetbedrock. Necesita el extrabedrock-keysen Python o el peer opcional@aws/bedrock-token-generatoren TypeScript. Sólo la activa quien llama:AgentFleet.connect(nombre)no la hereda de la receta (avisarecipe_renewal_ignored), y no renueva un secreto que lea también una pasarela hacia otro upstream. Desde la CLI,rayito agent invoke <flota> --renew-gateway-keysla pide al reconectar. Renovar la clave de corta duración de Bedrock.
rayito setup publica rayito-base-caps¶
rayito setup publica también la imagen rayito-base-caps que usa
rayito agent deploy en MicroVM, desde el mismo rayito-image.zip. El plan y
--dry-run muestran el paso y su coste (≈ $0,04 por semana). Sólo con
rayito setup --caps-image: por defecto no se publica, porque cuesta; si
falta, rayito agent deploy en MicroVM lo dice y pide esa orden.
Configurar AWS.
Correcciones¶
- Logs del host del agente. Los loggers
httpxyhttpcorearrancan en WARNING, así que ya no escriben la URL de cada petición con su consulta (donde puede ir una credencial). Una petición mal formada ya no deja unAttributeErroren el log. Seguridad. --create-secretbusca la clave por el preset de la pasarela (preset = "bedrock"leeAWS_BEARER_TOKEN_BEDROCK) y ya no duplica el prefijo del secreto.- OpenCode sin fichero de proyecto usa el
AGENTS.mdde la raíz y los permisos deopencode.json. OpenCode sin fichero de proyecto. --envrechaza nombres que parecen secretos (también*_SECRETy los segmentosPASS,PASSWD,PAT,CREDENTIAL(S), yAUTHoBEARERal final o junto aTOKEN,KEYoHEADER) y apunta a--secret-envy--secret-env-from.
Cambios a tener en cuenta¶
No hay cambios que rompan la API. Sí uno de la CLI:
- Incompatible:
rayito agent deploy --envrechaza los nombres que parecen secretos, también*_SECRET, los que tienen un segmentoPASS,PASSWD,PAT,CREDENTIALoCREDENTIALS, y los que llevanAUTHoBEARERcomo último segmento o junto aTOKEN,KEYoHEADER(en 0.16 pasaban;AUTH_MODE,AUTH_URLoAUTHOR_NAMEsiguen pasando). Migración: pasa el valor por--secret-env NOMBRE=<secreto>o--secret-env-from <secreto>. Los valores deenvdel proyecto sí se guardan en la receta: nada secreto enenv. -
Coste:
rayito setup --caps-imagepublicarayito-base-caps, otra versión de imagen (≈ $0,04 por semana); apagado por defecto. -
El secreto detectado de la pasarela cambia de nombre. La detección de 0.16 lo creaba en
rayito/rayito/agents/...; ahora queda enrayito/agents/<proyecto>/<proveedor>. Si sólo existe el de 0.16, el despliegue lo reutiliza. Ver Si vienes de 0.16. - IAM. Las políticas del lanzador y de quien llama ganan la sentencia
AgentRecipesobreparameter/rayito/agents/*:CallerPolicyconssm:PutParameter,GetParameteryDeleteParameter, ySandboxLauncherPolicysólo conGetParameteryDeleteParameter(escribir la receta equivale a poder desplegar:ImagePublisherPolicyganassm:PutParameter). Sin ella, el despliegue y la reconexión siguen con el avisorecipe_access_denied. Detalle en IAM. - TypeScript: dos peers opcionales nuevos,
@aws-sdk/client-ssmy@aws/bedrock-token-generator: el primero para la receta (sin él, conectar por nombre sigue como en 0.16) y el segundo sólo conrenewGatewayKeys.
El detalle completo está en el Changelog.