以下の内容はhttps://dk521123.hatenablog.com/entry/2026/01/13/191945より取得しました。


【AWS】AWS Glue ~ Wheelファイル作成 ~

◾️はじめに

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 など)

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

補足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 など)と比べると
 新しいバージョンものを使っている。

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

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




以上の内容はhttps://dk521123.hatenablog.com/entry/2026/01/13/191945より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14