ナンモワカランアザラシ

Ringed seal rings no bells

Dataflow Flex Templateの作り方

https://cloud.google.com/dataflow/docs/guides/templates/using-flex-templates?hl=ja

Dataflowはデータのストリーミングやバッチのためのソフトウェアを動かせるマネージドサービスである。 Apache Beam SDKを使って独自のテンプレートを作ることができる。

Dataflowで動かすための「テンプレート」はjsonファイルである。使用するコンテナイメージやパラメータを構造的に記述する設定ファイルだ。

FROM gcr.io/dataflow-templates-base/python312-template-launcher-base

ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/template/your-package/main.py"
ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="/template/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_SETUP_FILE="/template/setup.py" 

COPY requirements.txt /template/
COPY beametrics/ /template/your-package/
COPY setup.py /template/

RUN apt-get update \
    && apt-get install -y libffi-dev git \
    && rm -rf /var/lib/apt/lists/* \
    && pip install --no-cache-dir --upgrade pip \
    && pip install --no-cache-dir -r /template/requirements.txt \
    && cd /template && pip install .

ENTRYPOINT ["/opt/google/dataflow/python_template_launcher"]

こんな感じでDockerfileを作ってイメージビルドすればいい感じになる。たぶんsetup, requirementsなどが冗長だと思うけどとりあえずこの状態で動かすために十分ではある。 https://github.com/kesompochy/beametrics/blob/master/Dockerfile