AWS GlueJob 中 args getResolvedOptions() 方法的替代输入源是什么?

What can be alternate source of input for args getResolvedOptions() method in AWS GlueJob?

我有一个 Glue 作业,我想在其中将参数传递给 getResolvedOptions。我知道的一种方法是在 Lambda 函数中创建一个 JobRun,我可以传递它。在下面的代码中传递 param1param2 的其他方法是什么:

import sys
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ['param1',
                                     'param2'])

注意:我不想通过硬编码在代码中传递参数。

提前致谢。

您可以通过 cloudformation (cfn) yaml 模板轻松实现此目的,或者您可以通过 cli/sdk/console 等直接将变量添加到作业中。如果您想使用 cfn路线,你可以定义你的资源如下:

  JobNAME:
    Type: "AWS::Glue::Job"
    Properties:
      Name: String
      Description: String
      Role: String
      GlueVersion: 1.0
      Command: 
        Name: "glueetl"
        ScriptLocation: String
        PythonVersion: 3
      DefaultArguments: {
          "--job-language": "python",
          "--param1" : VALUE,
          "--param2" : VALUE,
          "--TempDir" : String,
          "--job-bookmark-option" : "job-bookmark-enable",
          "--enable-continuous-cloudwatch-log" : "false",
          "--enable-continuous-log-filter" : "false",
          "--enable-metrics" : "false"
      }
      ExecutionProperty:
        MaxConcurrentRuns: 1
      MaxCapacity: 5
      MaxRetries: 1
      Timeout: 60

定义后,您可以通过 getResolvedOptions 调出参数,注意胶水默认值有保留值,例如:

import sys
from awsglue.utils import getResolvedOptions

## @params: [JOB_NAME <--default assigned, param1 <---your value, param2 <---your value]
args = getResolvedOptions(sys.argv, ['JOB_NAME', 'param1','param2'])