Я создал фильтр подписки в группе журналов CloudWatch и направил его на мою лямбда-функцию, но получаю сообщение об ошибке в моей лямбда-функции.
Код:
import boto3
import binascii
import json
import base64
import zlib
def stream_gzip_decompress(stream):
dec = zlib.decompressobj(32 + zlib.MAX_WBITS) # offset 32 to skip the header
foo=''
for chunk in stream:
rv = dec.decompress(chunk)
if rv:
foo += rv
return foo
def lambda_handler(event, context):
# Decode and decompress the AWS Log stream to extract json object
stream=json.dumps(event['awslogs']['data'])
f = base64.b64decode(stream)
payload=json.loads(stream_gzip_decompress(f.decode(f)))
print(payload)
Ошибка:
Ответ:
{
"errorMessage": "decode() argument 1 must be str, not bytes",
"errorType": "TypeError",
"stackTrace": [
[
"/var/task/lambda_function.py",
34,
"lambda_handler",
"payload=json.loads(stream_gzip_decompress(f.decode(f)))"
]
]
}
Любая помощь или подсказка будет принята с благодарностью! Если у вас есть альтернативное решение, пожалуйста, предложите. Мое требование - обрабатывать журналы из CloudWatch с использованием лямбды.
Заранее спасибо !!