Glueで共通の処理を別ファイルにして読み込む

GlueJobを開発している時ファイルを分割したい場合ってありますよね。一見しただけではファイルを分割して管理する方法がわからなかったのでメモです。

まず、参照されるファイルパスにs3://BUCKET_NAME/functions.pyという様に入れてGlueの実行環境に配置されるようにします(複数ある場合はカンマ区切りで入力)

参照されるファイルパス

カレントディレクトリのパスが環境変数に含まれてなく同じディレクトリにあるファイルがimportできないので今いるディレクトリを追加します(Glueの環境で実際に追加されるパスは/tmp

# main.py
import os
import sys
sys.path.append(os.path.dirname(__file__))

import functions as fnc

fnc.hello()
# functions.py
def hello():
    print("hello!")

この様にすると読み込んでくれるようになりました。ちなみに実行するとちゃんと↓の様になります。

hello!