在AWS Websocket API Gateway中,当使用Lambda函数在VPC中运行时,可能会遇到pigwManagementApi.postToConnection调用超时的问题。这可能是由于Lambda函数无法访问Internet或VPC子网无法与API Gateway进行通信所致。
以下是解决此问题的代码示例:
import boto3
import json
def lambda_handler(event, context):
client = boto3.client('apigatewaymanagementapi', endpoint_url='wss://api-id.execute-api.region.amazonaws.com')
connectionId = event['requestContext']['connectionId']
# send data to client
response = client.post_to_connection(
Data=json.dumps(event),
ConnectionId=connectionId
)
return {
'statusCode': 200,
'body': json.dumps('Data sent successfully')
}
以上示例代码仅连接到API Gateway,发送从WebSocket客户端收到的事件数据到客户端。 这将解决postToConnection调用超时的问题,并允许Lambda函数在VPC中运行时使用WebSocket API。