如何設定 CloudWatch 訂閱篩選條件來叫用我的 Lambda 函數?

1 分的閱讀內容
0

我想要設定 Amazon CloudWatch 訂閱篩選條件來叫用我的 AWS Lambda 函數。

簡短描述

藉助 Amazon CloudWatch Logs,您可以使用訂閱篩選條件,將日誌資料傳送至您的 Lambda 函數。CloudWatch Logs 訂閱篩選條件經過 base64 編碼,並以 GZIP 格式壓縮。

在建立 Lambda 函數之前,請計算將會產生的日誌資料量。確定建立可管理磁碟區容量的函數。如果函數沒有足夠的容量,則會限制日誌串流。如需詳細資訊,請參閱 Lambda 配額

**注意:**串流大量 CloudWatch Logs 資料可能會導致高額用量費用。最佳實務是使用 AWS Budgets 來追蹤支出和用量。如需指示,請參閱如何使用 AWS Budgets 來追蹤我的支出和用量?

解決方案

建立可將日誌資料傳送至 AWS Lambda 函數的 CloudWatch Logs 訂閱篩選條件

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

1.    若要提供 CloudWatch Logs 許可來叫用 Lambda 函數,請執行類似下列內容的 AWS CLI 命令 add-permission

aws lambda add-permission \
    --function-name "helloworld" \
    --statement-id "helloworld" \
    --principal "logs.amazonaws.com" \
    --action "lambda:InvokeFunction" \
    --source-arn "arn:aws:logs:region:123456789123:log-group:YourLogGroup:*" \
    --source-account "123456789012"

**重要事項:**用您的 Lambda 函數名稱取代 "helloworld",用您的日誌群組取代 "YourLogGroup",以及用您的帳戶取代範例帳戶號碼。

2.    使用 AWS CLI 命令 put-subscription-filter 建立訂閱篩選條件,以傳送包含關鍵字的日誌事件。在下列範例中,關鍵字 "ERROR" 用於 Lambda 函數:

**重要事項:**用您的日誌群組取代 "YourLogGroup",以及用您的帳戶取代範例帳戶號碼。

aws logs put-subscription-filter \
    --log-group-name YourLogGroup \
    --filter-name demo \
    --filter-pattern "ERROR" \
    --destination-arn arn:aws:lambda:region:123456789123:function:helloworld

在收到包含類似下列內容的關鍵字 "ERROR" 的日誌事件時,CloudWatch 日誌群組 "YourLogGroup" 會叫用 Lambda 函數:

{
  "awslogs": {
    "data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
  }
}

相關資訊

篩選條件和模式語法

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