為什麼我的 Amazon S3 事件通知不調用我的 Lambda 函數?

2 分的閱讀內容
0

我已設定 Amazon Simple Storage Service (Amazon S3) 事件通知以調用 AWS Lambda 函數。但是,在 Amazon S3 事件發生時,此函數不會調用。

解決方法

**注意:**如果在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本

確認您的 Amazon S3 事件類型已正確設定

設定 Amazon S3 事件通知時,您必須指定哪些受支援的 Amazon S3 事件類型會導致 Amazon S3 傳送通知。如果您未指定的事件類型出現在 Amazon S3 儲存貯體中,則 Amazon S3 不會傳送通知。

例如,Amazon S3 事件通知設定為使用 s3:ObjectCreated:Put 事件調用 Lambda。如果您上傳大型檔案,則會使用分段上傳來上傳檔案。s3:ObjectCreated:CompleteMultipartUpload 事件必須與 s3:ObjectCreated:Put 事件一起選取。您也可以使用 s3:ObjectCreated:* 事件類型,針對用來建立物件的任何 API 請求通知。

確認您的物件金鑰名稱篩選條件包含上傳的檔案名稱

如果您的事件通知設定為使用物件金鑰名稱篩選,則只會針對具有特定字首或字尾的物件發佈通知。萬用字元 ("*") 不能用在篩選條件中作為字首或字尾來表示任何字元。請確保事件通知中指定的字首或字尾篩選條件包含上傳的物件金鑰名稱。

確認您的物件金鑰名稱篩選條件採用網址編碼 (百分比編碼) 格式

如果您的事件通知設定為使用物件金鑰名稱篩選,則只會針對具有特定字首或字尾的物件發佈通知。

如果您在字首或字尾中使用下列任何特殊字元,則必須以網址編碼 (百分比編碼) 格式輸入這些字元:

  • 括號 ("( )")
  • ASCII 字元範圍為 00–1F 十六進位 (0–31 十進位) 和 7F (127 十進位)
  • 美元 ("$")
  • & 符號 ("&")
  • 加號 ("+")
  • 逗號 (",")
  • 冒號 (":")
  • 分號 (";")
  • 等號 ("=")
  • 問號 ("?")
  • @ 符號 ("@")
  • 空格 (" ")

例如,若要將字首的值定義為 "test=abc/",請輸入 "test%3Dabc/" 作為值。

**注意:**萬用字元 ("*") 不能用在篩選條件中作為字首或字尾來表示任何字元。

如需詳細資訊,請參閱物件金鑰命名準則

確認 Lambda 函數的 AWS Identity and Access Management (IAM) 政策具有所需的許可

檢查 Lambda 函數的資源型政策以確認它允許 Amazon S3 儲存貯體調用該函數。如果沒有,請遵循授與 AWS 服務的函數存取權中的指示來新增所需的許可。

如需詳細資訊,請參閱 AWS Lambda 許可

**注意:**當您使用 Amazon S3 主控台新增事件通知時,所需的許可會自動新增至函數的政策。如果您使用 AWS CLI 中的 put-bucket-notification-configuration 動作新增事件通知,則不會自動更新函數的政策。

確認您的 Lambda 函數設定為處理來自 Amazon S3 事件通知的並行調用

您的 Lambda 函數必須設定為處理來自 Amazon S3 事件通知的並行調用。如果調用請求到達的速度超過函數可擴展的速度,或者您的函數達到並行數上限,則 Lambda 會對請求限流。

如需詳細資訊,請參閱非同步調用Lambda 函數擴展


相關資訊

如何對使用 Systems Manager Automation 透過 Amazon S3 事件通知調用 Lambda 函數的問題進行疑難排解?

將 AWS Lambda 與 Amazon S3 事件搭配使用

逐步解說: 為通知設定儲存貯體 (SNS 主題或 SQS 佇列)

教學課程: 使用 Amazon S3 觸發程序調用 Lambda 函數

為什麼在建立 Amazon S3 事件通知以調用我的 Lambda 函數時,收到「無法驗證下列目的地組態」錯誤?

AWS 官方
AWS 官方已更新 1 年前