Amazon web services 自动创造就业机会

Amazon web services 自动创造就业机会,amazon-web-services,amazon-ec2,pyspark,aws-glue,aws-glue-data-catalog,Amazon Web Services,Amazon Ec2,Pyspark,Aws Glue,Aws Glue Data Catalog,我有pyspark脚本,可以在AWS胶水中运行。但每次我从UI创建作业并将代码复制到作业中时,是否仍可以从s3 bucket中的文件自动创建作业。我有运行时将使用的所有库和粘合上下文是的,这是可能的。例如,您可以为此使用boto3框架 另一种选择是使用。您可以定义要创建的所有AWS资源,而不仅仅是模板文件中的粘合作业,然后在需要时从或更新堆栈 a的模板如下所示: MyJob: Type: AWS::Glue::Job Properties: Command:

我有pyspark脚本,可以在AWS胶水中运行。但每次我从UI创建作业并将代码复制到作业中时,是否仍可以从s3 bucket中的文件自动创建作业。我有运行时将使用的所有库和粘合上下文

是的,这是可能的。例如,您可以为此使用boto3框架


另一种选择是使用。您可以定义要创建的所有AWS资源,而不仅仅是模板文件中的粘合作业,然后在需要时从或更新堆栈

a的模板如下所示:

  MyJob:
    Type: AWS::Glue::Job
    Properties:
      Command:
        Name: glueetl
        ScriptLocation: "s3://aws-glue-scripts//your-script-file.py"
      DefaultArguments:
        "--job-bookmark-option": "job-bookmark-enable"
      ExecutionProperty:
        MaxConcurrentRuns: 2
      MaxRetries: 0
      Name: cf-job1
      Role: !Ref MyJobRole # reference to a Role resource which is not presented here

我写的脚本如下:

我们有glue_dependency.txt文件,脚本获取所有依赖文件的路径并创建zip文件。 它使用S3同步上传S3中的胶水文件和zip文件 或者,如果作业设置发生任何更改,将重新部署cloudformation模板
您可以编写shell脚本来完成此任务。

我创建了一个名为datajob的开源库,用于部署和编排粘合作业。您可以在github和pypi上找到它

pip install datajob
npm install -g aws-cdk@1.87.1
创建一个文件datajob_stack.py,该文件描述了粘合作业及其编排方式:

from datajob.datajob_stack import DataJobStack
from datajob.glue.glue_job import GlueJob
from datajob.stepfunctions.stepfunctions_workflow import StepfunctionsWorkflow


with DataJobStack(stack_name="data-pipeline-simple") as datajob_stack:

    # here we define 3 glue jobs with a relative path to the source code.
    task1 = GlueJob(
        datajob_stack=datajob_stack,
        name="task1",
        job_path="data_pipeline_simple/task1.py",
    )
    task2 = GlueJob(
        datajob_stack=datajob_stack,
        name="task2",
        job_path="data_pipeline_simple/task2.py",
    )
    task3 = GlueJob(
        datajob_stack=datajob_stack,
        name="task3",
        job_path="data_pipeline_simple/task3.py",
    )

    # we instantiate a step functions workflow and add the sources
    # we want to orchestrate. 
    with StepfunctionsWorkflow(
        datajob_stack=datajob_stack, name="data-pipeline-simple"
    ) as sfn:
        [task1, task2] >> task3
要部署要执行的代码,请执行以下操作:

export AWS_PROFILE=my-profile    
datajob deploy --config datajob_stack.py

非常感谢您的帮助

如果在文件到达时使用S3EventNotification触发Lambda,然后创建特定的粘合作业,该怎么办?是的,AWS同时提供AWS cli命令和boto3客户端,可以动态创建、执行和删除粘合作业。有足够的文档和AWSGreat信息示例。我试图搜索CloudFormation模板,一次创建多个GlueJob。i、 e.your-script-file1.py和your-script-file2.py。通过云层形成有可能吗?@RaxitSolanki绝对有可能。只需定义另一个AWS::Glue::Job类型的资源,并使用不同的逻辑名称,即MyJob1Thanks!这意味着,每次创建新的GlueJob脚本时,我们也需要更新CloudFormation模板。使用CodePipeline/CloudFormation集成GlueJob测试和部署的最佳实践是什么?假设我在GitRepo中创建了一个新的GlueJob脚本并编辑了一个现有的GlueJob a.py和b.py。现在,我只想部署新创建/编辑的作业,即在上一次提交中编辑/创建的作业。我目前正在使用CloudFormation、Git source->CodeBuild测试,并将工件保存在S3 Bucket中。但我不清楚如何部署多个作业。@YuriyBondaruk这里的逻辑名称是哪一个?属性中的“Name”或命令中的“Name”。@abhijitcaps。它是资源的名称。在我的示例中,它是名为MyJob的根元素