Python Shellの Glue JobをCloudformationで作成する(最新のGlue 3.0版)

Glueの概要

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

Cloudformationの概要

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

Cloudformationのテンプレート

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

Properties:Command:Name=pythonshell

に設定するとPython Shell jobになります。

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

Parameters:
  TagOwner:
    Type: String
    Default: Kiri
###########################################################
Resources:
  GluepythonJob:
    Type: 'AWS::Glue::Job'
    Properties:
      AllocatedCapacity: 0
      Command:
        ScriptLocation:  !Sub 's3://sample-${AWS::AccountId}/sample-cfn-glue-python/scripts/script.py'
        Name: pythonshell # set this with pythonshell glue
        PythonVersion: '3.9'
      DefaultArguments:
        --TempDir: s3://sample-123412341234/sample-cfn-glue-python/temp/
        --enable-glue-datacatalog: 'false'
        --enable-job-insights: 'false'
        --job-language: python
        library-set: analytics

      Description: 'python shell glue job made by cloudformation'
      ExecutionClass: STANDARD
      ExecutionProperty:
        MaxConcurrentRuns: 1
      GlueVersion: '3.0'
      MaxCapacity: 0.0625
      MaxRetries: 0
      Name: sample-cfn-glue-python
      Role: arn:aws:iam::123412341234:role/ps2-Glue-role
      Tags:
        TagOwner: !Sub '${TagOwner}'
      Timeout: 2880

サポートされている Python シェルジョブのライブラリ

Python 3.9 を使用する Python シェルでは、library-setをanalyticsに設定すると、事前にパッケージ済みのライブラリセットを使用できるようになります。

Python 3.9 を使用する Python シェルでは、必要に応じて事前にパッケージ済みのライブラリセットを使用するようにライブラリセットを選択できます。ライブラリセットを選択するには、library-set オプションを使用します。有効な値は、analytics および none です。

Python シェルジョブを実行する環境は、次のライブラリをサポートしています。

Python バージョンPython 3.6Python 3.9
ライブラリセット該当なしanalytics none
avro1.11.0
awscli116.2421.23.51.23.5
awswrangler2.15.1
botocore1.12.2321.23.51.23.5
boto31.9.2031.22.5
Elasticsearch8.2.0
numpy1.16.21.22.3
pandas0.24.21.4.2
psycopg22.9.3
pyathena2.5.3
PyGreSQL5.0.6
PyMySQL1.0.2
pyodbc4.0.32
pyorc0.6.0
redshift-connector2.0.907
requests2.22.02.27.1
scikit-learn0.20.31.0.2
scipy1.2.11.8.0
SQLAlchemy1.4.36
s3fs2022.3.0

作成されたGlue Jobの内容

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

[cloudshell-user@ip-10-4-35-126 ~]$ aws glue get-job --job-name sample-cfn-glue-python --output yaml                                                                                                                                                                             
Job:
  AllocatedCapacity: 0
  Command:
    Name: pythonshell
    PythonVersion: '3.9'
    ScriptLocation: s3://sample-123412341234/sample-cfn-glue-python/scripts/script.py
  CreatedOn: '2023-02-07T10:11:08.640000+00:00'
  DefaultArguments:
    --TempDir: s3://sample-123412341234/sample-cfn-glue-python/temp/
    --enable-glue-datacatalog: 'false'
    --enable-job-insights: 'false'
    --job-language: python
    library-set: analytics
  Description: python shell glue job made by cloudformation
  ExecutionClass: STANDARD
  ExecutionProperty:
    MaxConcurrentRuns: 1
  GlueVersion: '3.0'
  LastModifiedOn: '2023-02-07T10:11:08.640000+00:00'
  MaxCapacity: 0.0625
  MaxRetries: 0
  Name: sample-cfn-glue-python
  Role: arn:aws:iam::123412341234:role/ps2-Glue-role
  Timeout: 2880
  
  

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