AWS Lambda:找出(并禁用)自己的事件源?

AWS Lambda: Find out (and disable) own event source?

lambda 函数是否可以停用自己的事件源(通过 EventBridge 每月触发一次)而无需手动 entering/configuring 某些东西?

我考虑过使用 update_event_source_mapping 实现它:

response = S3_CLIENT.update_event_source_mapping(
        UUID = event_source_UUID,
        FunctionName = context.invoked_function_arn,
        Enabled = False,    
    )

...但是要使用它,我显然需要 event_source_UUID 作为参数。

为了获得 event_source_UUID 我尝试了这个:

    lambdaClient = boto3.client('lambda')
    response = lambdaClient.list_event_source_mappings(
        FunctionName=context.invoked_function_arn, 
        EventSourceArn = "arn:aws:events:eu-west-1:xyz:rule/TriggerMiddleOfMonth"
        )
    print(response)

这个错误是怎么回事:
调用 ListEventSourceMappings 操作时发生错误 (InvalidParameterValueException):无法识别的事件源。不支持的来源 arn
这在某种程度上也是可以理解的,因为 documentation 表示 ListEventSource 将只接受来自的事件源:

但是我现在如何找到实际的事件源(= link 到事件桥)?
我真的必须反过来,轮询我帐户中存在的所有事件源条目,然后检查它们是否有 link 到我的 lambda 函数?

PS:
我也没弄清楚,如何手动获取这个UUID。

假设:

  • 受影响的规则只触发了这个感兴趣的功能(该规则没有触发其他功能)
  • 只有一个规则触发了感兴趣的函数

答案:

rules = eventClient.list_rule_names_by_target(TargetArn=context.invoked_function_arn)
response = eventClient.disable_rule(Name=rules["RuleNames"][0])

这当然要求您的 lambda 函数角色具有对 EventBridge 的完全写入权限(您可能不想要)或者您附加专用策略

当然,enablin.g 规则再次使用相同的方法使用“enable_rule”