为什么 Python Glue Job 会为我的 Job 参数抛出 KeyError?

问题描述 投票:0回答:1

我定义了一个 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:'测试参数'

如何解决这个问题?

python aws-glue
1个回答
0
投票

看起来

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
。)

© www.soinside.com 2019 - 2024. All rights reserved.