使用boto3为同一Glue工作流添加多触发器时触发IdempotentParameterMismatchException错误
问题描述
目标:创建AWS Glue工作流,添加作业和触发器并运行。
已完成操作:
- 使用以下代码创建工作流:
import boto3 def create_workflow(wf_name): response = client.create_workflow( Name=wf_name, Description='string' ) return response['Name'] wf_name=create_workflow('wf_dev_jan_5th')
- 使用以下代码为工作流
wf_dev_jan_5th创建关联作业abc_dev的触发器new_trigger,未报错:
response_trigger=client.create_trigger( Name="new_trigger", WorkflowName="wf_dev_jan_5th", Type='ON_DEMAND', Actions=[ { 'JobName': 'abc_dev", # 注意:此处存在引号不匹配的语法错误 'Arguments': { 'string': 'string' }, 'Timeout': 123, 'SecurityConfiguration': 'string', 'NotificationProperty': { 'NotifyDelayAfter': 123 } }, ] )
遇到的问题:创建名为new_trigger_1的触发器关联作业def_dev到同一工作流时,报错:
error:IdempotentParameterMismatchException: An error occurred (IdempotentParameterMismatchException) when calling the CreateTrigger operation: Trigger with name 'new_trigger' already submitted with different configuration
错误分析
这个报错的核心原因是你尝试提交的触发器请求中,重复使用了已存在的触发器名称new_trigger,但配置和之前的不一致。出现这个情况通常有两种可能:
- 创建第二个触发器的代码中,不小心将
Name参数仍设为new_trigger,而非new_trigger_1 - 之前创建
new_trigger的请求存在未完成的异步操作,重复提交了不同配置的同名请求
解决方案
检查并修正触发器名称
确认创建new_trigger_1的代码中,Name参数确实是"new_trigger_1",而非"new_trigger"。示例修正后的代码:response_trigger_1=client.create_trigger( Name="new_trigger_1", WorkflowName="wf_dev_jan_5th", Type='ON_DEMAND', Actions=[ { 'JobName': 'def_dev', 'Arguments': { 'string': 'string' }, 'Timeout': 123, 'SecurityConfiguration': 'string', 'NotificationProperty': { 'NotifyDelayAfter': 123 } }, ] )修正第一个触发器代码的语法错误
注意你第一个触发器的代码中'JobName': 'abc_dev",存在引号不匹配问题,应该改为'JobName': 'abc_dev',,避免后续出现未知错误。检查现有触发器状态
登录AWS Glue控制台,查看触发器列表:- 确认
new_trigger已正常创建 - 确认
new_trigger_1未被创建过(如果已存在,需删除后重新创建,或使用update_trigger接口修改)
- 确认
处理幂等性问题
如果确认名称无误但仍报错,可能是之前的请求有残留。可以先调用get_trigger接口查询new_trigger的状态,确认其配置是否与预期一致,再重新提交new_trigger_1的创建请求。
内容的提问来源于stack exchange,提问作者Naveen Srikanth
相关产品推荐
相关产品推荐

