【AWS】AWS Glue ~ Pythonライブラリ追加 ~

◾️はじめに

https://dk521123.hatenablog.com/entry/2022/09/28/105558

で、Glue jobのジョブパラメータを扱ったが、そこから月日が経ち、
「—additional-python-modules」「--python-modules-installer-option」が
出てきたので、メモしておく

目次

【1】--extra-py-files
 1)python libraryの作り方
 2)指定方法
【2】--additional-python-modules
 1)--extra-py-filesとの差異
 2)使用用途1:提供済モジュールのバージョン変更
【3】--python-modules-installer-option
【4】サンプル
 例1:Wheel を使用したPython ライブラリのインストール
 例2:requirements.txt を使用した Python ライブラリのインストール
 例3:直接設定で Python ライブラリのインストール

【1】--extra-py-files

*  追加したい Python モジュールを指す Amazon S3 パス(フルパス)を指定
* スクリプト実行前に、AWS Glueの作業ディレクトリにコピーされる
* 複数指定する場合は、「,」区切り。

1)python libraryの作り方

* Linux 上で以下を行う

使用上の注意

* 自分で使用するGlue jobのPython バージョンに合わせておくこと

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/release-notes.html

作成例

# バージョン確認
python3 -V
# Python 3.11.2 (For Glue5.1)

# Step1: To download python library
mkdir glue_libs
pip install --target glue_libs xxxx=1.1.1 --no-cache-dir --timeout 1800
# Just wait

# Step2: To create the ZIP file for the python libs
cd glue_libs
zip -r ../glue_py_libs.zip .

# Step3: Deploy
cd ..
aws s3 cp ./glue_py_libs.zip s3://your-s3-bucket/xxx/glue_py_libs.zip

2)指定方法

'--extra-py-files': 's3://your-s3-bucket/xxx/glue_py_libs.zip'

'--extra-py-files': 's3://your-s3-bucket/test/test-loggger.py,s3://your-s3-bucket/test/test-lib.py'

【2】--additional-python-modules

* 追加の Python モジュールとライブラリをインストール

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-libraries.html

* Wheelファイル作成については、以下の関連記事を参照のこと

AWS Glue ~ Wheelファイル作成 ~
https://dk521123.hatenablog.com/entry/2026/01/13/191945

1)--extra-py-filesとの差異

特徴 --extra-py-files --additional-python-modules
仕組み PYTHONPATH にパスを追加するだけ 内部で pip install を実行する
主な用途 自作の共通関数や単一の .py ファイル Pandas, NumPy などの外部ライブラリ
依存関係 解決しない(手動で全ファイル必要) 自動で解決する
バイナリ C言語等のバイナリを含むライブラリに弱い バイナリを正しく配置・登録できる
優先順位 既存ライブラリより優先されにくい場合がある 既存ライブラリを上書き(更新)できる

補足:--extra-py-filesとは?
https://dk521123.hatenablog.com/entry/2022/09/28/105558

より抜粋
~~~~
* 追加したい Python モジュールを指す Amazon S3 パス(フルパス)を指定
* スクリプト実行前に、AWS Glueの作業ディレクトリにコピーされる
~~~~

2)使用用途1:提供済モジュールのバージョン変更

* AWS Glue で提供済みの Python モジュール の numpy や pandasなどを
 更新する際に使える

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-libraries.html#glue-modules-provided

より抜粋
~~~~~~~
AWS Glue で提供済みの Python モジュール

これらの提供済みモジュールのバージョンを変更するには、
--additional-python-modules ジョブパラメータにより
新しいバージョンを指定します。
~~~~~~~

【3】--python-modules-installer-option

* pip3 に追加オプションを渡す

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-libraries.html

追加オプション例

* 以下のサイト参照

https://bigdata-analytics.jp/python/pip-install-option/

Options Explanations
-U, --upgrade pipそのものをアップグレードする場合
-r <ファイル名>, --requirement <ファイル名> 指定したファイルからパッケージリストを読み込む
--no-deps <パッケージ名> 関連する依存関係にあるパッケージをインストールしない

【4】サンプル

例1:Wheel を使用した Python ライブラリのインストール

--additional-python-modules s3://amzn-s3-demo-bucket/path/to/package-1.0.0-py3-none-any.whl,
s3://your-bucket/path/to/another-package-2.1.0-cp311-cp311-linux_x86_64.whl

AWS Glue ~ Wheelファイル作成 ~
https://dk521123.hatenablog.com/entry/2026/01/13/191945

例2:requirements.txt を使用した Python ライブラリのインストール

--python-modules-installer-option -r
--additional-python-modules s3://amzn-s3-demo-bucket/path/to/requirements.txt

例3:直接設定で Python ライブラリのインストール

--additional-python-modules scikit-learn==0.21.3,ephem==4.1.6

参考文献

https://dev.classmethod.jp/articles/20200812-aws-glue-version2-python-module-update/

関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ 基本編 / ジョブ ~
https://dk521123.hatenablog.com/entry/2019/11/17/231505
AWS Glue ~ ジョブパラメータ ~
https://dk521123.hatenablog.com/entry/2022/09/28/105558
AWS Glue ~ Wheelファイル作成 ~
https://dk521123.hatenablog.com/entry/2026/01/13/191945
オフライン環境下で pip install するには
https://dk521123.hatenablog.com/entry/2021/07/10/164833