Glue Spark JobをCloudformationで作成する

Glueの概要

AWS Glue は、分析を行うユーザーが複数のソースからのデータを簡単に検出、準備、移動、統合できるようにするサーバーレスのデータ統合サービスです。分析、機械学習、アプリケーション開発に使用できます。また、ジョブの作成、実行、ビジネスワークフローの実装のための生産性向上に役立つツールやデータ運用ツールも追加されています。

Cloudformationの概要

AWS CloudFormation は、インフラストラクチャをコードとして扱うことで、AWS およびサードパーティーのリソースをモデル化、プロビジョニング、管理することができます。

Cloudformationのテンプレート

以下のテンプレートを作成しました。

Properties:Command:Name=gleetl

に設定するとspark jobになります。

AWSTemplateFormatVersion: 2010-09-09
Description: Create glue spark job

Parameters:
  TagOwner:
    Type: String
    Default: Kiri
###########################################################
Resources:
  GlueSparkJob:
    Type: 'AWS::Glue::Job'
    Properties:
      Name: 'sample-cfn-glue-spark'
      Role: !Sub 'arn:aws:iam::${AWS::AccountId}:role/ps2-Glue-role'
      Timeout: 2880
      GlueVersion: '4.0'
      NumberOfWorkers: 10 # This value becomes default value of MaxCapasity
      WorkerType: G.1X   
      ExecutionClass: 'STANDARD'
      ExecutionProperty:
        MaxConcurrentRuns: 15
      Command:
        ScriptLocation:  !Sub 's3://sample-${AWS::AccountId}/sample-cfn-glue-spark/scripts/script.py'
        Name: glueetl # set this with spark glue
        PythonVersion: '3'
      AllocatedCapacity: 0
      MaxRetries: 0
      Tags:
        TagOwner: !Sub '${TagOwner}'
      DefaultArguments:
        '--job-language': python
        '--TempDir':  !Sub 's3://sample-${AWS::AccountId}/sample-cfn-glue-spark/temp/'
        '--job-bookmark-option': job-bookmark-disable
        '--enable-continuous-cloudwatch-log': 'false'
        '--enable-continuous-log-filter': 'false'

作成されたGlue Jobの内容

以下は作成されたGlue Jobの内容です。

[cloudshell-user@ip-10-6-35-50 ~]$ aws glue get-job --job-name sample-cfn-glue-spark --output yaml

Job:
  AllocatedCapacity: 10
  Command:
    Name: glueetl
    PythonVersion: '3'
    ScriptLocation: s3://sample-123412341234/sample-cfn-glue-spark/scripts/script.py
  CreatedOn: '2023-02-07T01:51:40.763000+00:00'
  DefaultArguments:
    --TempDir: s3://sample-123412341234/sample-cfn-glue-spark/temp/
    --enable-continuous-cloudwatch-log: 'false'
    --enable-continuous-log-filter: 'false'
    --job-bookmark-option: job-bookmark-disable
    --job-language: python
  ExecutionClass: STANDARD
  ExecutionProperty:
    MaxConcurrentRuns: 15
  GlueVersion: '4.0'
  LastModifiedOn: '2023-02-07T01:51:40.763000+00:00'
  MaxCapacity: 10.0
  MaxRetries: 0
  Name: sample-cfn-glue-spark
  NumberOfWorkers: 10
  Role: arn:aws:iam::123412341234:role/ps2-Glue-role
  Timeout: 2880
  WorkerType: G.1X
  
  

タイトルとURLをコピーしました