跳至內容

如何對 Amazon S3 事件通知未調用 Lambda 函數的問題進行疑難排解?

1 分的閱讀內容
0

我想要對 Amazon Simple Storage Service (Amazon S3) 事件通知未調用 AWS Lambda 函數的問題進行疑難排解。

解決方法

若要對 Lambda 函數的 Amazon S3 事件通知進行疑難排解,請完成下列步驟以確認您的權限和組態設定:

  1. 開啟 Amazon S3 console (Amazon S3 主控台),然後瀏覽至您的儲存貯體。
  2. 選擇 Properties (屬性) 索引標籤。
  3. Event notifications (事件通知) 中,選取您的事件通知,然後選擇 Edit (編輯)。
  4. General configuration (一般組態) 中,檢閱 Prefix (首碼) 和 Suffix (尾碼) 設定。
  5. (選用) 如果您使用首碼或尾碼,請確認下列項目:
    儲存貯體中的物件金鑰符合物件金鑰命名準則
    任何特殊字元都採用 URL 編碼 (百分比編碼) 格式
  6. Destination (目的地) 中,確認 Lambda 函數的 ARN 是否與有效函數相符。
  7. 選擇 Save changes (儲存變更)。
  8. 開啟 Lambda console (Lambda 主控台),然後選擇 Functions (函數)。
  9. Function name (函數名稱) 中,選擇您的 Lambda 函數。
  10. 選擇 Configuration (組態) 索引標籤,然後選擇 Permissions (權限)。
  11. 資源型政策陳述式中,選擇您的政策,然後選擇 View policy (檢視政策)。
  12. 請確定資源型政策允許 Amazon S3 調用 Lambda 函數:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "ACCOUNT_ID"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:s3:::BUCKET_NAME"
        }
      }
    }
  ]
}

**注意:**將 REGIONACCOUNT_IDFUNCTION_NAMEBUCKET_NAME 替換為您的 AWS 區域、AWS 帳戶、函數名稱和儲存貯體名稱。AWS:SourceAccount 是擁有該儲存貯體的帳戶,ArnLike 是該儲存貯體的 ARN。

在上述資源型政策中,主體 s3.amazonaws.com 有權對 Resource (資源) ARN 執行 lambda:InvokeFunction API 動作。

**重要:**Amazon S3 通常會在幾秒鐘內傳送事件通知,但有時可能需要 1 分鐘或更長時間。如需詳細資訊,請參閱 Amazon S3 事件通知

相關資訊

如何允許 Lambda 函數存取 Amazon S3 儲存貯體?

當我使用 Lambda 函數將檔案上傳到另一個 AWS 帳戶的 Amazon S3 儲存貯體時,為什麼會出現拒絕存取錯誤?

AWS 官方已更新 1 年前