簡體   English   中英

Lambda SQS 發送消息超時

[英]Lambda time out on SQS sending message

我設置了一個非常簡單的 Lambda 來向 SQS 發送消息。 Lambda在一個VPC中,有兩個公共su.nets(我不完全了解aws.networking,我只是看到連接到su.nets的路由表有0.0.0.0/0作為路由之一,連接到Inte .net 網關)和一個安全組。 我已經仔細檢查了權限,它們工作正常,因為如果我刪除 Lambda 上的 VPC 設置,它就可以工作。

我嘗試按照文章中的建議創建端點: 從 VPC 發送 SQS ,但 Lambda 超時。

正如SO 解決方案鏈接中所建議的那樣,我嘗試在客戶端中添加 endpoint_url,但這也不起作用。

Lambda 密碼如下:

#Testing SQS push message.
import botocore
import boto3

def main(event, context):
    session = boto3.Session()

    sqs_client = session.client(
        service_name='sqs',
        endpoint_url='https://sqs.eu-west-1.amazonaws.com',
    )

    sqs_client.send_message(
        QueueUrl='https://sqs.eu-west-1.amazonaws.com/***********/tutorial-queue-test',
        MessageBody='msg sent from '
    )

    return {}

恢復我的設置我有:

  • VPC 內的 Lambda,2 個 su.nets(公共),1 個安全組。
  • 質量標准
  • VPC 內的 SQS 端點

我無法將 Lambda 保留在 VPC 之外,因為我需要使用 EFS,我會將其集成到 Lambda 中。

解決方案:畢竟我成功地正確啟動了 Lambda,我猜這是混合了錯誤的安全組規則,包括 Lambda 和 Endpoint,以及禁用的 VPC private DNS 名稱。 感謝大家的支持。

出於可讀性目的,我總結了使我成功啟動 Lambda 的主要解決方案:

  • 為 Lambda 添加一個安全組,它有 INBOUND RULE(Protocol:All TCP, Ports:0 - 65535, Source:0.0.0.0/0) 和 OUTBOUND RULE(Protocol:All, Ports:All, Destination:0.0.0.0/0 )
  • 為端點添加一個安全組,它具有入站規則(IP 版本:–,類型:所有 TCP,協議:TCP,端口:0 - 65535,來源:<INSERT_LAMBDA_SECURITY_GROUP>)和出站規則(IP 版本:IPv4,類型:所有流量,協議:全部,端口:全部,目的地:0.0.0.0/0)。
  • From Endpoints, select the current Endpoint->Actions->Modify private DNS name-> Enable private DNS names.

放置在公共 su.net 中的 Lambda 沒有 inte.net 連接,因為它們不能使用 Inte.net 網關。

因此,根據最佳實踐,第一步是將 lambda 置於私有或隔離的 su.net 中。

然后,有兩個選擇:

  1. 如果您的 Lambda 需要 inte.net 連接,請添加一個 NAT 網關並添加一條從 Private su.net 到它的路由。 如果你 go 這個路由,你將不需要使用 VPC 端點。

  2. 如果您想避免使用 NAT 網關,只需將 lambda 放在隔離的 su.net 中,它將使用您創建的 VPC 端點。

如果端點啟用了私有 DNS,則無需提供自定義endpoint_url ,boto3 將按原樣工作。

如果這不起作用,請驗證端點是否在您的 Lambda 正在使用的 su.net 中創建。 還要驗證您是否已為終結點打開專用 DNS。

另請參閱: 為什么 VPC 中公共 su.net 內的 AWS lambda function 無法連接到 inte.net?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM