AWS GlueでPython ShellでETLの仕組みを2つほど作っていて共通化できるmethodを外部から読み込めないかと思い調べてみた。
ライブラリを egg ファイルまたは whl ファイルとしてパッケージ化して設置する
作成したライブラリをeggファイル or whlファイルとしてパッケージ化して読み込ませる。このパッケージ化したファイルをglueの管理画面にある「python library path」として指定する。
libフォルダーを作成してその中にsetup.pyファイルを作成する
現時点(2023年2月2日段階)でpython3.9で.eggファイルを使用するとモジュールが読み込めないエラーが発生するので .whlを作成する。 .eggはpython3.6で稼働できることを確認
setup.py
from setuptools import setup
setup(
name="hello_module",
version="0.1",
packages=['hello_module']
)
次にhello_moduleディレクトリを作成して以下の3つのファイルを作成する
hello_world.py
def hello_world(name):
return 'Hello World, ' + str(name)
goodby_world.py
def goodby_world(name):
return 'Goodby World, ' + str(name)
__init__.py
空ファイルのまま
次に以下のコマンドを実行
.eggファイルを作成する
python setup.py bdist_egg
.whlファイルを作成する
python setup.py bdist_wheel
実行するとdistフォルダー内にファイルが生成される。これをS3の特定のバケットに設置する
AWS Glueでpython shellを作成
from hello_module import hello_world, goodby_world
hi = hello_world('Taro')
print(hi)
by = goodby_world('Hanako')
print(by)
Libraries Pathの設定
以上で実行して確認する。