Lambda调用post_to_connection时超时

3

我正在使用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个回答

14

我发现[这篇帖子][1]要求更清晰的boto3文档。事实证明,如果你实例化apigatewaymanagementapi客户端,你必须传递endpoint_url参数,但是即使你不传递,函数也不会抛出任何错误。无论如何,api_client应该像这样创建:

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

注意:不要将以“@connections”结尾的URL字符串传递给endpoint_url。
[1]: https://github.com/boto/boto3/issues/1914


太棒了,我为这个问题挣扎了一段时间。 - West

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接