我一直在嘗試閱讀此內容,但我得到的資訊要么相互矛盾,要么我只是不太了解,無法理解為什么沒有沖突。
我正在使用 CDK 在 vpc 中設定一個 lambda,并將 SQS 佇列作為事件源。SQS 佇列將訂閱不同 AWS 賬戶中的 SNS 主題。現在我的問題只是在 SQS/Lambda 互動之后。
我希望 Lambda 能夠輪詢/接收來自 SQS 佇列的訊息,而無需通過公共互聯網。起初我認為這需要設定 vpc/安全組才能訪問 SQS vpc 端點。但是我讀了另一篇文章,有人說 lambda poller 本身沒有在你的 lambda 的 VPC 中運行,所以沒有 vpc 配置適用于它。如果是這樣,輪詢器是否只在 AWS 的私有“全球基礎設施”中運行?
但這只是輪詢——我也想知道輪詢是否找到訊息,lambda 是否也能夠讀取和回應(例如,假設 lambda 拋出例外,或者我想回傳部分批處理回應——在這兩種情況下 Lambda具有將訊息回傳到佇列的內置功能。所有這些是否也可以在 VPC 之外的非公共 Internet 上處理?
我想知道,因為我發現幾乎 100% 的檔案/示例只討論 lambda發布到 SQS,或者手動從佇列中讀取訊息——而不是當 SQS 用作 lambda 事件源時。
uj5u.com熱心網友回復:
只要我們只討論 Lambda 函式的觸發器,您就不需要 VPC 端點。
您必須區分Lambda 服務、Lambda 函式和執行背景關系。Lambda 服務在 AWS 后端的某處運行并管理 Lambda 函式。如果您已將 SQS 配置為 Lambda 函式的觸發器,則 Lambda 服務將定期輪詢 SQS 以獲取新訊息,并在收到一些訊息后執行以下操作。
首先,它檢查 Lambda 函式的任何執行背景關系是否可用,即是否忙于處理另一個事件。如果不是這種情況,它將創建一個新的執行背景關系或您的 Lambda 函式實體,它部分位于 VPC 中。
您在執行背景關系中運行的代碼可以通過共享的彈性網路介面訪問 VPC(實際上有點復雜)。這是應用安全組的地方。它適用于您在執行背景關系中所做的一切。AWS 有另一個私有通道來與執行背景關系通信。這用于傳遞事件并接受來自 Lambda 函式的回應。
tl;dr:要觸發 Lambda 函式,您不需要 VPC 端點,如果您想從代碼直接與服務對話,則需要一個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482358.html
標籤:亚马逊网络服务 aws-lambda 亚马逊广场 亚马逊-vpc aws-安全组
上一篇:如何在buildspec.yml檔案工件中添加.platform
下一篇:如何使用CDK將zip上傳到S3
