我想要設定 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=="
}
}
相關資訊
篩選條件和模式語法