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

本地环境调用getResolvedOptions()触发KeyError错误

问题分析与解决:AWS Glue getResolvedOptions 本地运行报错

你的理解确实有误

你猜的没错——getResolvedOptions的args参数不是键值对字典的列表,它要求的是模拟命令行输入的字符串列表。就像你在终端里启动Glue Job时输入的参数格式:--参数名 参数值,对应的列表就是把每个--参数名和参数值拆成独立的字符串元素。

你之前传的是字典列表,函数内部会把每个字典当成单个参数字符串去解析,自然会触发索引错误(因为字典不是字符串,没法取arg_string[0])。

修正后的代码示例

把args改成正确的格式,同时注意第二个参数里的参数名不需要带--前缀,函数内部会自动处理匹配:

from awsglue.utils import getResolvedOptions

# 正确的args格式:命令行风格的字符串列表
args = [
    '--JOB_NAME', 'JOB_NAME',
    '--input_file_path', 's3://things/that.csv',
    '--output_bucket', 's3://things'
]

# 解析参数,第二个参数是不带--的参数名列表
resolved_args = getResolvedOptions(args, ['JOB_NAME', 'input_file_path', 'output_bucket'])

# 打印结果,会返回一个字典,键是参数名,值是对应的值
print(resolved_args)
# 输出示例:{'JOB_NAME': 'JOB_NAME', 'input_file_path': 's3://things/that.csv', 'output_bucket': 's3://things'}

该函数能否在本地运行?

完全可以!只要你已经搭建好了包含AWS Glue库、Spark/PySpark的本地环境,修正参数格式后就能正常执行getResolvedOptions。

不过有个小提醒:如果你的后续代码需要访问S3等AWS资源,要确保本地配置了有效的AWS凭证(比如通过~/.aws/credentials文件,或者设置AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY环境变量),否则会遇到权限问题。而getResolvedOptions本身就是个纯参数解析工具,不需要依赖Glue集群,本地运行毫无压力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:37:52