【发布时间】:2022-12-14 19:20:29
【问题描述】:
我已经开始为 lambda 使用 lambda power-tools。目前我的代码看起来像:
@event_source(data_class=SNSEvent)
@LOGGER.inject_lambda_context(log_event=True)
def handler(event: SNSEvent, context: LambdaContext) -> None: # pylint: disable=W0613
"""Lambda function invoked by Image builder SNS topic, putting Image
builder ami-id in parameter store.
:param event: SNS message containing Image Builder build results
:return:
"""
LOGGER.debug(f"Event: {event}") //logging event
for record in event.records:
message = record.sns.message
LOGGER.info(f"Message: {message}")
process_sns_event(message)
return None
与评论一致,我想记录一下 lambda 在开始时实际得到了什么。至于现在在云手表中,我得到的条目如下:
Event: <aws_lambda_powertools.utilities.data_classes.sns_event.SNSEvent object at 0x7f9bbd36a0> 或事件:<generator object SNSEvent.records at 0x7facfb6510> 将 powertools 版本更新到最新版本后。<aws_lambda_powertools.utilities.data_classes.event_bridge_event.EventBridgeEvent object at 0x7f8af526d0> 用于事件桥一。
我很困惑我应该怎么做才能只记录事件 json。任何人都可以指出我应该怎么做吗? (可以看出我是初学者)。
编辑:将 powertools 更新到最新版本后,我得到:
Event: <generator object SNSEvent.records at 0x7facfb6510>
将日志行更改为:LOGGER.debug(f"Event: {event.records}")
【问题讨论】:
-
试试
print(json.dumps(event, default=str)) -
您也可以尝试将注释设置为 str。 def(事件:...)-> str:
-
不适用于上述两个 cmets
标签: python amazon-web-services aws-lambda