Время ожидания лямбды истекает при вызове post_to_connection - PullRequest
0 голосов
/ 27 мая 2020

Я использую WebSocket ApiGateway с интеграцией AWS Lambda. Когда я пытаюсь отправить данные клиенту с помощью метода post_to_connection из boto3.client('apigatewaymanagementapi'), функция Lambda всегда отключается без сообщения об ошибке. В CloudWatch регистрируется только сообщение о тайм-ауте:

Время ожидания задачи истекло через 3,00 секунды

Мой код:

import json
import boto3
import time
import urllib

api_client = boto3.client('apigatewaymanagementapi')

def lambda_handler(event, context):

    connectionId = event['requestContext']['connectionId']

    api_client.post_to_connection(ConnectionId=connectionId, Data=json.dumps({'test': '1'}))

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
        }

Что я делаю не так ?

1 Ответ

1 голос
/ 27 мая 2020

Я нашел этот пост с просьбой предоставить более понятную документацию по boto3. Оказывается, если вы создаете экземпляр клиента apigatewaymanagementapi, вы должны передать аргумент endpoint_url, но функция не выдаст никаких ошибок, если вы этого не сделаете. В любом случае, api_client должен быть создан следующим образом:

api_client = boto3.client('apigatewaymanagementapi',
endpoint_url='https://{api-id}.execute-api.{your-aws-region}.amazonaws.com/{stage}')

Внимание: не передавайте строку url с '@connections' в конце в endpoint_url

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...