【发布时间】:2022-10-03 10:40:26
【问题描述】:
使用 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
}
)
提前致谢。
【问题讨论】:
-
场景 1:使用 boto3 创建作业。 (这里的问题是参数/参数无法在“路径”中定义。场景 2:使用默认 getresolvedoption 创建的胶水作业。胶水作业脚本不包含参数/参数。胶水脚本中的预期结果 getResolvedOptions(args,["JOB_NAME"," s3sourcepath"])。