GlueのgetResolvedOptionsで任意の引数でもエラーが出ないようにする

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"

参照