我定义了一个 Python Shell 类型的简单 Glue Job:
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv, [
'test-parameter'
])
value = args["test-parameter"]
print(f'value = {value}')
我正在尝试传递以下作业参数:
--test-parameter
hello world
当我运行此胶水作业时,出现以下错误:
KeyError:'测试参数'
如何解决这个问题?
看起来
getResolvedOptions
将参数名称中的连字符转换为下划线。我通过添加一些日志记录来确认这一点:
import sys
from awsglue.utils import getResolvedOptions
print(f'sys.argv = {sys.argv}')
args = getResolvedOptions(sys.argv, [
'test-parameter'
])
print(f'args = {args}')
value = args["test-parameter"]
print(f'value = {value}')
在 CloudWatch 日志中,我看到:
sys.argv = ['--test-parameter', 'hello world', ...]
args = {'test_parameter': 'hello world'}
为了解决此问题,我将作业参数更改为使用下划线而不是连字符。 (请注意,您仍然需要两个前导连字符...所以
--test_parameter
而不是 --test-parameter
。)