[英]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.