【问题标题】:AWS Lambda times out when trying to connect to sqs尝试连接到 sqs 时 AWS Lambda 超时
【发布时间】:2021-10-29 23:47:47
【问题描述】:

我的 lambda 在尝试连接到 SQS 时超时。 Lambda 具有允许其连接到 SQS 的角色,但它位于 VPC 和子网内。有什么办法可以解决这个问题?

我在日志中看到了这个错误:

[INFO]  2019-10-01T14:29:58.303Z    e8ad5b4e-119a-48c1-b320-1d855c4efb22    Getting SQS queue url from <some_sqs_queue>...
    14:30:16
[CRITICAL]  2019-10-01T14:30:16.743Z    e8ad5b4e-119a-48c1-b320-1d855c4efb22    ## Transmission Error Connect timeout on endpoint URL: "https://us-west-2.queue.amazonaws.com/"

这是在本地工作但不能在 lambda 上运行的相关代码:

 sqs = boto3.client(
        'sqs', # region_name="us-west-2",
        aws_access_key_id=credentials.access_key,
        aws_secret_access_key=credentials.secret_key,
        aws_session_token=credentials.token,
        config=Config(connect_timeout=6, read_timeout=10, retries={'max_attempts': 2})
    )

try:
    logger.info(f"Getting SQS queue url from {sqs_queue}...")
    queue_url = sqs.get_queue_url(QueueName=sqs_queue)['QueueUrl']
    # iterate over entries in batches of 10
    for batch in [entries[index:index + sqs_batch_limit] for index in range(0, len(entries), sqs_batch_limit)]:
        logger.info(f"Sending batch of {len(batch)} records to sqs...")
        sqs.send_message_batch(
            QueueUrl=queue_url,
            Entries=batch
        )
        logger.info("Sent batch of records to sqs successful")

它甚至没有得到sqs_queue_url,但它在本地工作。此日志传输错误连接错误的可能原因是什么?

【问题讨论】:

标签: amazon-web-services aws-lambda amazon-sqs


【解决方案1】:

您可以认为 AWS Lambda 函数“位于 VPC 和子网内”。

但是,Amazon SQS 存在于 Internet 上,而不是 VPC 中。

因此,您需要一种方法让 Lambda 函数访问 Internet,或者需要一种方法使 Amazon SQS 在 VPC 中可用。

选项 1:允许 AWS Lambda 函数访问 Internet

当 Lambda 函数配置为使用 VPC 时,它可以直接与 Internet 通信。但是,当它配置为使用 VPC 时,它无法直接访问 Internet。

建议的配置是:

  • 将 Lambda 函数附加到 VPC 中的私有子网
  • 在公共子网中启动 NAT 网关,并更新私有路由表以通过 NAT 网关发送 Internet 绑定流量

选项 2:使 Amazon SQS 在 VPC 内可访问

您可以在 VPC 中创建Amazon VPC Endpoint for Amazon SQS

如果您使用 Amazon VPC 托管您的 AWS 资源,则可以在您的 VPC 和 Amazon SQS 之间建立连接。您可以使用此连接将消息发送到您的 Amazon SQS 队列,而无需通过公共互联网。

【讨论】:

    猜你喜欢
    • 2020-11-14
    • 1970-01-01
    • 2017-10-22
    • 2016-07-11
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    相关资源
    最近更新 更多