Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

445
Visualizações
¿Cómo conectar un websocket de python a una suscripción de AppSync, con IAM Auth?

Quiero que Python abra una suscripción de AWS AppSync y reciba las actualizaciones.

El blog oficial está indeciso sobre cómo autenticar un websocket con IAM.
https://aws.amazon.com/blogs/mobile/appsync-websockets-python/

Se remite a este documento sobre la firma de solicitudes http , que no menciona los websockets y, por lo tanto, no proporciona pistas sobre qué incluir, excluir o variar para iniciar un websocket. Me temo que me llevará bastante tiempo digerir, adaptar y probar antes de que suceda algo.

 IAM_header = { "accept": "application/json, text/javascript", "content-encoding": "amz-1.0", "content-type": "application/json; charset=UTF-8", "host": <HOST>, "x-amz-date": <ISO_UTC_TIMESTAMP>,, "X-Amz-Security-Token": <IAM SECURITY TOKEN>, "Authorization": <IAM SIGNATURE> }

Supongo que nadie ha hecho esto antes y puede compartir algunas ideas o código.

IAM_SIGNATURE
En el contexto de la creación de un websocket, ¿cuáles son los "parámetros de solicitud" que estamos firmando?

Hasta ahora, he ingresado detalles en request_aws4auth y he rellenado los encabezados de eso en el websocket. Ese esfuerzo recibió este tipo de respuesta:

mensaje

<< {"payload":{"errors":[{"errorType":"BadRequestException","message":"La firma de solicitud que calculamos no coincide con la firma que proporcionó. Verifique su clave de acceso secreta de AWS y el método de firma. Consulte la documentación del servicio para obtener más detalles.\n\n La cadena canónica para esta solicitud debería haber sido \n'POST\n/graphql/connect\n\nhost:iutysrbt2qxx7ekx2xi.appsync-api.ap-southeast-2.amazonaws.com \nx-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934852b855\nx-amz-date:20200730T044539Z\nx-amz-security-token:FwoGZpgV9hfLzGbDiPLCK1HMsXYJapqB299GReKYAALLKPOgifkFMi2VZsiycpLbxp7ZDGGO4NfSgEaULYm9GMMkGIj1Ck/0YcckBNawWpisa6NxdMs=\n\nhost;x-amz-content-sha256;x-amz-date; x-amz-security-token\n44136fa355b3678a1b4fc21fe77e8310c060f61caaff8a'\n\n The String-to-Sign should have been \n'AWS4-HMAC-SHA256\n20200730T044539Z\n20200730/ap-southeast-2/appsync/aws4_request\n29a5ecebf83602958c569f1ae18b5fa8353dd04833a833885'\n "}]},"tipo":"error_conexión"}

Así que necesito resolver la "Cadena canónica", la "Cadena para firmar" y cómo incluirlos en el encabezado de Autorización.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

graphql-python/gql es compatible con AWS AppSync desde la versión 3.0.0rc0 .

Admite consultas, mutación e incluso suscripciones en el punto final en tiempo real.

Es compatible con los métodos de autenticación IAM, clave api y JWT.

La documentación está disponible aquí .

Este es un ejemplo de una suscripción que usa la autenticación IAM:

 import asyncio import os import sys from gql import Client, gql from gql.transport.appsync_websockets import AppSyncWebsocketsTransport # Uncomment the following lines to enable debug output # import logging # logging.basicConfig(level=logging.DEBUG) async def main(): # Should look like: # https://XXXXXXXXXXXXXXXXXXXXXXXXXX.appsync-api.REGION.amazonaws.com/graphql url = os.environ.get("AWS_GRAPHQL_API_ENDPOINT") if url is None: print("Missing environment variables") sys.exit() transport = AppSyncWebsocketsTransport(url=url) async with Client(transport=transport) as session: subscription = gql( """ subscription onCreateMessage { onCreateMessage { message } } """ ) print("Waiting for messages...") async for result in session.subscribe(subscription): print(result) asyncio.run(main())
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda