【问题标题】:How correctly log AWS Lambda event with lambda powertools如何使用 lambda powertools 正确记录 AWS Lambda 事件
【发布时间】: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: &lt;aws_lambda_powertools.utilities.data_classes.sns_event.SNSEvent object at 0x7f9bbd36a0&gt; 或事件:<generator object SNSEvent.records at 0x7facfb6510> 将 powertools 版本更新到最新版本后。&lt;aws_lambda_powertools.utilities.data_classes.event_bridge_event.EventBridgeEvent object at 0x7f8af526d0&gt; 用于事件桥一。

我很困惑我应该怎么做才能只记录事件 json。任何人都可以指出我应该怎么做吗? (可以看出我是初学者)。

编辑:将 powertools 更新到最新版本后,我得到: Event: &lt;generator object SNSEvent.records at 0x7facfb6510&gt;

将日志行更改为:LOGGER.debug(f"Event: {event.records}")

【问题讨论】:

  • 试试print(json.dumps(event, default=str))
  • 您也可以尝试将注释设置为 str。 def(事件:...)-> str:
  • 不适用于上述两个 cmets

标签: python amazon-web-services aws-lambda


【解决方案1】:

这是与 powertools 维护者讨论的链接: https://github.com/awslabs/aws-lambda-powertools-python/discussions/1769

所有细节都在那里帮助我解决了它。

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2022-08-24
    • 2019-02-09
    • 2016-09-30
    • 1970-01-01
    • 2019-11-21
    • 2020-03-25
    • 1970-01-01
    • 2020-05-22
    相关资源
    最近更新 更多