GlueでPythonを使った場合、ジョブパラメータで指定せずにジョブを実行すると以下のようなエラーがでてしまうのですが、任意で指定可能なパラメータを指定したかったので調べてみました。
Traceback (most recent call last): File "/tmp/xxxxx.py", line 23, in <module> getResolvedOptions(sys.argv, ["optionalArgs"]) File "/opt/amazon/lib/python3.6/site-packages/awsglue/utils.py", line 119, in getResolvedOptions parsed, extra = parser.parse_known_args(args[1:]) File "/usr/lib64/python3.7/argparse.py", line 1787, in parse_known_args namespace, args = self._parse_known_args(args, namespace) File "/usr/lib64/python3.7/argparse.py", line 2022, in _parse_known_args ', '.join(required_actions)) File "/opt/amazon/lib/python3.6/site-packages/awsglue/utils.py", line 76, in error raise GlueArgumentError(msg) awsglue.utils.GlueArgumentError: the following arguments are required: --optionalArgs
stackoverflowの記事によるとsys.argv
にジョブの実行のコマンドライン引数が配列で渡ってくるのでこれに特定の引数があったらgetResolvedOptions
の処理をするという回避方法が良さそうだったので↓の様にして回避しました。
optionalArgs = None
if ("--optionalArgs" in sys.argv):
args = getResolvedOptions(sys.argv, ["optionalArgs"])
optional_args = args["optionalArgs"]
else:
optional_args = "default"