Skip to content

Que alcance con la API Key: direccion por defecto al estilo S3 - #3

Open
thomyluca wants to merge 2 commits into
mainfrom
endpoint-por-defecto-estilo-s3
Open

Que alcance con la API Key: direccion por defecto al estilo S3#3
thomyluca wants to merge 2 commits into
mainfrom
endpoint-por-defecto-estilo-s3

Conversation

@thomyluca

@thomyluca thomyluca commented Aug 12, 2026

Copy link
Copy Markdown

Qué hace

Lo que pidió Gonza: new CaerusClient({ apiKey }) y nada más.

La forma es la de S3 — el cliente lleva adentro una dirección conocida y lo que aporta
el usuario son las credenciales. Como la API Key ya identifica el entorno, la dirección
no tiene que hacerlo.

endpoint queda como escape para lo que no sea el Caerus hospedado: uno propio, o uno
local. Es el --endpoint-url de la CLI de AWS y existe por el mismo motivo.

Precedencia: explícito → CAERUS_ENDPOINTDEFAULT_ENDPOINT. Un valor escrito en
el código nunca lo pisa una variable que puso otro en la máquina.

⛔ Esto no se puede publicar todavía

DEFAULT_ENDPOINT le llega a todo el que no la sobrescriba, así que solo puede
contener una dirección comprobada. Y la que está hoy no responde:

host TCP TLS
api.caerus.dev:443 abierto ECONNRESET
grpc.caerus.dev:443 abierto ECONNRESET
sre.caerus.dev:443 abierto ECONNRESET
engine.caerus.dev:443 abierto ECONNRESET
inventado-9x7q.caerus.dev:443 abierto ECONNRESET
caerus.dev:443 abierto http/1.1, certificado válido
registry.npmjs.org:443 (control) abierto h2, certificado válido

Los cuatro candidatos se comportan idéntico a un subdominio que inventé al azar, que
es lo que pasa cuando el balanceador acepta cualquier nombre y corta al no encontrar
ruta. Y caerus.dev responde pero negocia http/1.1: sin HTTP/2 no hay gRPC posible.

Si esto se publica así, new CaerusClient({ apiKey }) —justo lo que el PR promete— le
falla a quien lo instale con un error de conexión que no explica nada.

Gonza: ¿cuál es la dirección, y está levantada? Cambio la constante, verifico que
acepte TLS y negocie h2, y ahí sí publicamos.

Verificado

110 tests, build limpio, check-public-api pasa. Y contra el motor local corriendo:
precedencia en los tres niveles, takeMany, stock, confirm. 6 de 6.

Lo que no se puede verificar todavía es el default, por lo de arriba.

Pedido del equipo. La forma es la de S3: el cliente lleva adentro una direccion
conocida y lo que aporta el usuario son las credenciales. Como la API Key ya
identifica el entorno, la direccion no tiene que hacerlo, y
new CaerusClient({ apiKey }) alcanza.

endpoint queda como escape para lo que no sea el Caerus hospedado, uno propio o
uno local, que es el --endpoint-url de la CLI de AWS. La precedencia es
explicito, entorno, default: un valor escrito en el codigo nunca lo pisa una
variable que puso otro en la maquina.

OJO, y esta en el documento de arquitectura: DEFAULT_ENDPOINT le llega a todo el
que no la sobrescriba, asi que solo puede tener una direccion comprobada. Hoy
api.caerus.dev:443 NO responde: resuelve por DNS y acepta el TCP, pero corta el
handshake TLS igual que un subdominio inventado, y lo mismo grpc, sre y engine.
Solo caerus.dev contesta, con http/1.1, asi que tampoco sirve para gRPC.

Por eso esto no se publica hasta que Gonza confirme la direccion y la verifique
yo. El mecanismo queda listo; lo unico pendiente es el valor de la constante.
caerus.dev.ar.sdk.apps.disilab.ar:443, que la paso Gonza. Reemplaza a
api.caerus.dev:443, que no existia.

Verificado hasta donde se puede hoy: el host acepta TLS con certificado valido y
negocia h2, asi que gRPC puede pasar por ahi, y una llamada del SDK sin pasar
endpoint llega efectivamente al servidor.

Pero el despliegue esta caido: contesta 502 tanto el gRPC como el REST de
swagger. O sea que el ingress responde y no hay backend sano detras. Por eso
esto no se publica todavia; falta una llamada real que termine bien.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants