◾️はじめに
https://dk521123.hatenablog.com/entry/2022/09/28/105558
https://dk521123.hatenablog.com/entry/2025/12/31/015032
の続き。
https://dk521123.hatenablog.com/entry/2025/12/19/233012
https://dk521123.hatenablog.com/entry/2025/12/25/000120
で行おうとしていた AWS Glueで、外部接続せずにSDV (Synthetic Data Vault)を使う際に、 必要なWheelファイルを作成手順を記す
目次
【0】前提条件 【1】手順 Step0:Create Dockerfile Step1:Run docker Step2: Make wheel files Step3: Deploy Step4: Set --additional-python-modules StepX: Clean-up 【2】補足:AWS GlueにSDVを組み込んだ際の注意点 1)SDVの依存ライブラリとGlueデフォルトのライブラリの不一致 2)Glueのworker typeは最低でもG.2X以上
【0】前提条件
* docker がインストールされていること
【1】手順
* 今回は、以下を前提とする
| Type | Value |
|---|---|
| Glue | Glue5.1 (Python3.11) |
| 追加したいPython library | numpy==2.4.1 sdv==1.32.1 |
Step0:Create Dockerfile
* この処理は、1回だけでいい
Dockerfile
FROM public.ecr.aws/amazonlinux/amazonlinux:2023
RUN dnf update -y && \
dnf install -y \
python3.11 \
python3.11-devel \
gcc \
gcc-c++ && \
dnf clean all
RUN curl -sSLO https://bootstrap.pypa.io/get-pip.py && \
python3.11 get-pip.py && \
rm get-pip.py
RUN python3.11 -m pip install --upgrade \
pip \
setuptools \
wheel \
build
WORKDIR /build
CMD ["/bin/bash"]
Step1:Run docker
docker build -t glue51-py311-wheelbuild . # 「-v "$(pwd)":/build」について # ... 実行したカレントディレクトリとWORKDIR「build」をアタッチする docker run -it -v "$(pwd)":/build glue51-py311-wheelbuild
Step2: Make wheel files
# Container内で、以下を実行する # python3.11 -m pip wheel <Library>==<Version> -w wheelhouse/ python3.11 -m pip wheel numpy==2.4.1 sdv==1.32.1 -w wheelhouse/
実行後
* wheelhouseディレクトリ内に、 Wheelファイルに依存ファイルも含めて格納される
Step3: Deploy
* 作成したWheelファイルを全て、s3バケットにデプロイする => 例えば、 s3://your-bucket/xxx/xxx1.whl ... に置く
Step4: Set --additional-python-modules
--additional-python-modules:
s3://your-bucket/xxx/boto3-1-42.26-py3-none-any.whl
,s3://your-bucket/xxx/botocore-1-42.26-py3-none-any.whl
...
,s3://your-bucket/xxx/sdv-1.32.1-py3-none-any.whl
補足1:設定値について
* 自分の追加したいpythonライブラリ(今回は「sdv」)および 以下のAWS公式ドキュメントの「AWS Glue で提供済みの Python モジュール」 のものを指定した(boto3, botocore など)
補足2:TFで指定する場合
* 以下の関連記事をベースにした場合、以下のように「join」を使うと綺麗
https://dk521123.hatenablog.com/entry/2025/12/25/000120
"--additional-python-modules" = join("," [ "s3://your-bucket/xxx/boto3-1-42.26-py3-none-any.whl", "s3://your-bucket/xxx/botocore-1-42.26-py3-none-any.whl", "...", "s3://your-bucket/xxx/sdv-1.32.1-py3-none-any.whl" ])
StepX: Clean-up
# Step2: Remove docker container docker ps -a # docker container rm < container id> docker container rm af7bbc98c980 # Step2: Remove docker image docker images # docker rmi <image id> docker rmi f6618945dab1
【2】補足:AWS GlueにSDVを組み込んだ際の注意点
1)SDVの依存ライブラリとGlueデフォルトのライブラリの不一致
* SDV(sdv=1.32.1)の場合、 公式ドキュメントにあるGlueデフォルトのライブラリ(numpy など)と比べると 新しいバージョンものを使っている。
2)Glueのworker typeは最低でもG.2X以上
* worker typeがG.1Xの場合、メモリ不足でエラーになって実行できなかった
関連記事
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 ~ Pythonライブラリ追加 ~
https://dk521123.hatenablog.com/entry/2025/12/31/015032
オフライン環境下で pip install するには
https://dk521123.hatenablog.com/entry/2021/07/10/164833
AWS上に合成データ生成システムを構築する 〜 構想編 〜
https://dk521123.hatenablog.com/entry/2025/12/19/233012
AWS上に合成データ生成システムを構築する 〜 インフラ編 〜
https://dk521123.hatenablog.com/entry/2025/12/25/000120
Docker ~ Docker 環境をクリーンにする ~
https://dk521123.hatenablog.com/entry/2024/07/25/230911