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

使用Boto3更新AWS Glue作业参数失败,求解决方法

问题:使用Boto3更新AWS Glue作业参数失败

尝试通过Boto3更新AWS Glue作业的参数,执行以下代码时失败:

response = glue_client.get_job(JobName=glue_job_name)
job = response['Job']
job['DefaultArguments'][parameter_name] = new_parameter_value
glue_client.update_job(JobName=glue_job_name, JobUpdate=job)

执行后返回如下错误:

{
  "statusCode": 500,
  "body": "Error: Parameter validation failed:\nUnknown parameter in JobUpdate: \"Name\", must be one of: Description, LogUri, Role, ExecutionProperty, Command, DefaultArguments, NonOverridableArguments, Connections, MaxRetries, AllocatedCapacity, Timeout, MaxCapacity, WorkerType, NumberOfWorkers, SecurityConfiguration, NotificationProperty, GlueVersion, CodeGenConfigurationNodes, ExecutionClass, SourceControlDetails\nUnknown parameter in JobUpdate: \"CreatedOn\", must be one of: Description, LogUri, Role, ExecutionProperty, Command, DefaultArguments, NonOverridableArguments, Connections, MaxRetries, AllocatedCapacity, Timeout, MaxCapacity, WorkerType, NumberOfWorkers, SecurityConfiguration, NotificationProperty, GlueVersion, CodeGenConfigurationNodes, ExecutionClass, SourceControlDetails\nUnknown parameter in JobUpdate: \"LastModifiedOn\", must be one of: Description, LogUri, Role, ExecutionProperty, Command, DefaultArguments, NonOverridableArguments, Connections, MaxRetries, AllocatedCapacity, Timeout, MaxCapacity, WorkerType, NumberOfWorkers, SecurityConfiguration, NotificationProperty, GlueVersion, CodeGenConfigurationNodes, ExecutionClass, SourceControlDetails\nUnknown parameter in JobUpdate.Command: \"test_parameter\", must be one of: Name, ScriptLocation, PythonVersion, Runtime"
}

原因分析

get_job返回的Job对象包含大量AWS Glue内部维护的字段(如Name、CreatedOn、LastModifiedOn),以及Command中的额外参数,但update_job的JobUpdate参数仅接受官方指定的可修改字段,直接传入完整Job对象会触发参数校验失败。

解决方案

无需传递完整Job对象给JobUpdate,仅构造包含需要修改字段的字典即可。针对更新DefaultArguments的场景,具体步骤如下:

  1. 获取现有作业的DefaultArguments并复制(避免修改原响应对象)
  2. 修改目标参数值
  3. 构造仅包含DefaultArguments的JobUpdate字典
  4. 调用update_job执行更新

修正后的代码:

# 获取现有作业的DefaultArguments并复制
response = glue_client.get_job(JobName=glue_job_name)
default_args = response['Job']['DefaultArguments'].copy()

# 更新指定参数
default_args[parameter_name] = new_parameter_value

# 构造JobUpdate,仅传入需要修改的字段
glue_client.update_job(
    JobName=glue_job_name,
    JobUpdate={
        'DefaultArguments': default_args
    }
)

如果需要同时修改其他可配置字段(如Description、Role等),只需将对应字段添加到JobUpdate字典中,确保仅包含官方允许的字段列表中的项即可。

内容的提问来源于stack exchange,提问作者jgm.3008

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:34:50