我有一個查詢。我試圖用谷歌搜索,但找不到特定于我的查詢的答案。
S3 是一項全球服務。我們可以通過 Internet 或使用我們的專用網路中的 VPC 端點訪問它。我明白了。
如果 VPC 中存在 lambda 函式。那么s3事件是如何觸發lambda函式的呢?
uj5u.com熱心網友回復:
您必須區分 Lambda 服務、Lambda 函式和執行背景關系。
Lambda 服務操作 Lambda 函式,Execution Context 是 Lambda 函式的一個實體。只有執行背景關系位于 VPC 中。其余組件位于其外部。Lambda 服務始終可以與任何特定 Lambda 函式的執行背景關系通信,以將事件傳遞給它并監控執行。它通過私有渠道而不是通過 VPC 來實作。
S3 也不是真正的全球服務。存盤桶和 API 位于特定區域。它有一個全域命名空間,這意味著存盤桶名稱必須是全域唯一的。這意味著一些 API 會進行“全域檢查”,但是當 S3 起作用時,它會在一個區域內起作用。
讓我們討論一下 S3-Lambda 集成中發生的情況。當存盤桶中發生事件(例如創建物件)時,S3 服務會檢查哪些端點對此事件感興趣。如果要將事件發送到 Lambda 函式,它必須與存盤桶位于同一區域。然后,S3 將聯系 Lambda 服務并告訴它使用此特定事件呼叫 Lambda 函式。S3 不關心這里的結果。
這就是 Lambda 接管的地方。該服務檢查是否允許 S3 呼叫相關函式。如果是這種情況,它將檢查不忙的該功能的現有執行背景關系。一旦找到,它將事件發送到執行背景關系,該執行背景關系在 VPC 內部執行,并且可以訪問 VPC 中的資源。
假設一切順利,這就是它的結束方式,否則,Lambda 將在另一個執行背景關系中重試該事件。
參考
- AWS Docs:將 AWS Lambda 與 Amazon S3 結合使用
- AWS Docs:異步 Lambda 呼叫
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476419.html
標籤:亚马逊网络服务 亚马逊-s3 aws-lambda 亚马逊-vpc
