簡體   English   中英

如何以編程方式使用boto3 create_job將參數傳遞給粘合作業

[英]how to pass parameter to glue job using boto3 create_job programmatically

我正在使用 boto3 創建作業腳本創建粘合作業,並嘗試將默認參數值傳遞給路徑位置以運行不同的 s3 存儲桶文件。

下面的腳本是示例代碼,它將創建粘合 ETL 作業。 如何使用 args 將參數傳遞給 sourcepath?

示例腳本:

import boto3
import json
client = boto3.client('glue')
response = client.create_job(
   Name='jobname',
   Description='Glue Job',
   LogUri='s3://bucket/logs/',
   Role='arn:aws:iam::',
   ExecutionProperty={
       'MaxConcurrentRuns': 3
   },
   Command={
       'Name': 'glue',
       'ScriptLocation': 's3://bucketname/gluejob.py',
       'PythonVersion': '3'
   },
   MaxRetries = 1,
   Timeout=123,
   GlueVersion='3.0',
   NumberOfWorkers=2,
   WorkerType='G.1X',
   DefaultArguments = {'s3sourcepath':'s3://bucketname/csvfile.csv'}
   CodeGenConfigurationNodes = {
   'node-1':{
       'S3CsvSource': {
               'Name': 's3_source',
               'Paths': [
                   args['s3sourcepath'], ------ here how to pass default arguments 
               ],
               'Separator': 'comma',
               'QuoteChar': 'quote',
               'WithHeader': True,
               'WriteHeader': True
           }
)

提前致謝。

您首先需要檢索使用 getResolvedOptions 傳遞的 arguments。 像這樣的東西:

import sys
from awsglue.utils import getResolvedOptions

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

現在您應該可以使用args['s3sourcepath']

您可以閱讀內容以獲取更多信息。

不確定是否可以在創建 Glue 作業時設置此運行時參數。 你可以在調用 start_job_run() 時嘗試設置運行時參數嗎? 您可以在此處參考代碼示例

response = client.start_job_run(
           JobName = 'my_test_Job',
           Arguments = {
             '--s3sourcepath':   's3 path',
              } )

在您的代碼中,作業命令以glue形式給出。

Command={
   'Name': 'glue',
   'ScriptLocation': 's3://bucketname/gluejob.py',
   'PythonVersion': '3'

},

但是這里的文檔說它應該是glueetl

Command={
       'Name': 'glueetl',
       'ScriptLocation': 's3://bucketname/gluejob.py',
       'PythonVersion': '3'
   },

你能試試嗎

'Name': 'glueetl'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM