使用 boto3 从 aws lambda 调用 amazon lex 时出错

Error while calling amazon lex from aws lambda using boto3

我在同一区域发布了一个 Lex 机器人和一个 Lambda 函数。我正在尝试使用以下代码与 Lambda 中的 Lex 进行交互。

import boto3 
client = boto3.client('lex-runtime')

def lambda_handler(event, context):
    response = client.post_text(
      botName='string',
      botAlias='string',
      userId='string',
      # sessionAttributes={
      #     'string': 'string'
      # },
      # requestAttributes={
      #     'string': 'string'
      # },
      inputText='entity list'
    )
    return response

在测试代码时,我的 lambda 函数超时。如果您需要了解任何其他信息,请告诉我。

错误信息:

"errorMessage": "2021-04-30T07:09:45.715Z <req_id> Task timed out after 183.10 seconds"

VPC 中的 Lambda,包括默认 VPC,无法访问互联网。由于您的 lambda 在默认 VPC 中,它将无法连接到任何 lex-runtime AWS 端点,从而导致超时。

自 lex does not support VPC endpoints 以来,您的 lambda 访问 lex-runtime 的唯一方法是:

  • 解除您的函数与 VPC 的关联。如果您这样做,您的函数将能够连接到互联网,随后连接到 lex-runtime.

  • 创建 private subnet in a default VPC, and setup a NAT gateway。然后将您的函数放在新子网中。这样您的函数就可以使用 NAT 连接到互联网。

更多信息在: