You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Boto3 put_targets正确配置EventBridge规则的Target Input

解决EventBridge Target常量输入无法生效的问题

核心解决方案:不要使用带缩进格式的JSON字符串作为EventBridge Target的Input值,改用无多余空白的紧凑JSON格式即可解决部署后无需手动干预的问题。

问题原因

EventBridge的Target Input字段要求传入严格符合JSON规范的字符串,带缩进(indent=2)的JSON虽然语法合法,但多余的换行、缩进空格可能导致EventBridge内部解析异常。而控制台的「Prettify」按钮本质是重新格式化JSON字符串,去除了可能干扰解析的格式冗余,因此手动操作后输入恢复正常。

修改后的代码

将json.dumps的参数调整为生成紧凑JSON:

state_machine_input = {
    'STATE_MACHINE_DEFINITION_NAME': event_dict.get('workflowToBeTriggered'),
    'LDAP_USER': event_dict.get('updatedBy')
}
eventbridge_client = boto3.client('events')

response = eventbridge_client.put_targets(
    Rule=f"{EVENT_NAMING_SUFFIX}{event_dict.get('name')}",
    Targets=[
        {
            'Id': SM_INITIATION_LAMBDA_FUNCTION_NAME,
            'Arn': SM_INITIATION_LAMBDA_FUNCTION_ARN,
            'Input': json.dumps(state_machine_input, separators=(',', ':'))
        }
    ]
)

补充说明

  • separators=(',', ':')参数会生成无空格的紧凑JSON(例如{"key":"value","key2":"value2"}),完全符合EventBridge的解析要求。
  • 若你的输入包含非ASCII字符,可追加ensure_ascii=False参数,但需确保Lambda能正确处理UTF-8编码的输入。
  • 无需保留indent参数,它是导致格式冗余的核心原因。

内容的提问来源于stack exchange,提问作者Mondy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:46:04