gpt4 book ai didi

amazon-web-services - 尝试连接到 sqs 时 AWS Lambda 超时

转载 作者:行者123 更新时间:2023-12-01 21:55:02 25 4
gpt4 key购买 nike

尝试连接到 SQS 时我的 lambda 超时。 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 但它在本地工作。这个log Transmission Error Connect error可能是什么原因?

最佳答案

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

但是,Amazon SQS存在于互联网上,不存在于VPC中。

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

选项 1:允许 AWS Lambda 函数访问互联网

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

相反,推荐的配置是:

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

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

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

If you use Amazon VPC to host your AWS resources, you can establish a connection between your VPC and Amazon SQS. You can use this connection to send messages to your Amazon SQS queues without crossing the public internet.

关于amazon-web-services - 尝试连接到 sqs 时 AWS Lambda 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com