我已将无服务器回购应用程序部署到我的AWS账户。该应用程序是LogzioCLoudWatchShipper。我的意图是将cloudwatch事件设置为该lambda函数的触发器,然后将执行该lambda函数,从事件中提取日志数据,并将日志数据发送到logz.io。
当我在AWS控制台中测试lambda函数时,输出以下错误:“ errorType”: “ IOError”, “ errorMessage”:“不是压缩文件”
我已经成功部署了无服务器回购应用程序,并且可以在AWS控制台中看到lambda的代码。
我指定了一个具有以下布局的事件:
{"awslogs":{"data":"aGVsbG8gd29ybGQ=}}
此处是从事件中提取日志数据的功能。此函数是lambda函数的一部分。
def _extract_aws_logs_data(event):
# type: (dict) -> dict
try:
logs_data_decoded = event['awslogs']['data'].decode('base64')
logs_data_unzipped = gzip.GzipFile(fileobj=StringIO(logs_data_decoded)).read()
logs_data_dict = json.loads(logs_data_unzipped)
return logs_data_dict
except ValueError as e:
logger.error("Got exception while loading json, message: {}".format(e))
raise ValueError("Exception: json loads")
我还将事件添加到了我的serverless.yaml功能块中:
handler: lambda_function.lambda_handler //From AWS console
events:
- cloudwatchEvent:
event:
source:
- 'custom.servicename'
detail-type:
- 'New_Event'
~