Como configurar modelos Flex

Nesta página, você encontra informações sobre permissões, variáveis de ambiente obrigatórias do Dockerfile e os opções de pipeline compatíveis para os modelos flexíveis do Dataflow.

Para configurar um modelo flexível de amostra, consulte o tutorial de modelo flexível.

Noções básicas sobre as permissões do modelo flexível

Ao trabalhar com modelos flexíveis, há três conjuntos de permissões que você deve conhecer:

  • Permissões para criar recursos
  • Permissões para criar um modelo flexível
  • Permissões para executar um modelo flexível

Permissões para criar recursos

Para desenvolver e executar um pipeline de modelo flexível, é necessário criar vários recursos (por exemplo, um bucket de preparo). Para tarefas únicas de criação de recursos, use o papel de proprietário básico.

Permissões para criar um modelo flexível

Como desenvolvedor de um modelo flexível, é necessário criar o modelo para disponibilizá-lo aos usuários. A criação envolve o upload de uma especificação de modelo em um bucket do Cloud Storage e o provisionamento de uma imagem do Docker com o código e as dependências necessárias para executar o pipeline. Para criar um modelo flexível, é necessário ter acesso de leitura e gravação ao Cloud Storage e acesso de leitura e gravação ao Container Registry. Para conceder essas permissões, atribua o seguinte papel:

  • Administrador do Storage (roles/storage.admin)

Permissões para executar um modelo flexível

Quando você executa um modelo flexível, o Dataflow cria um job para você. Para criar o job, a conta de serviço do Dataflow precisa da seguinte permissão:

  • dataflow.serviceAgent

Quando você usa o Dataflow pela primeira vez, o serviço atribui esse papel para você. Portanto, nenhuma ação é necessária para conceder essa permissão.

Por padrão, a conta de serviço do Compute Engine é usada para VMs de inicializador e de worker. A conta de serviço precisa dos seguintes papéis e capacidades:

  • Administrador de objetos do Storage (roles/storage.objectAdmin)
  • Visualizador (roles/viewer)
  • Worker do Dataflow (roles/dataflow.worker)
  • Acesso de leitura e gravação ao bucket de preparo
  • Acesso de leitura à imagem do modelo flexível

Para conceder acesso de leitura e gravação ao bucket de preparo, use o papel Administrador de objetos do Storage (roles/storage.objectAdmin). Para mais informações, consulte Papéis do IAM para o Cloud Storage.

Para conceder acesso de leitura à imagem do modelo flexível, use o papel Visualizador de objeto do Storage (roles/storage.objectViewer). Para mais informações, consulte Como configurar o controle de acesso.

Como configurar variáveis de ambiente do Dockerfile necessárias

Se quiser criar seu próprio arquivo do Docker para um job de modelo Flex, especifique as seguintes variáveis de ambiente:

Java

Especifique FLEX_TEMPLATE_JAVA_MAIN_CLASS e FLEX_TEMPLATE_JAVA_CLASSPATH no seu Dockerfile.

Python

Especifique o seguinte no Dockerfile: FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS e FLEX_TEMPLATE_PYTHON_SETUP_FILE

Por exemplo, configuramos as seguintes variáveis de ambiente no tutorial Streaming em modelos flexíveis do Python:

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"

Como alterar a imagem base

Use uma imagem de base fornecida pelo Google para empacotar os contêineres usando o Docker. Escolha o nome de versão mais recente na referência de imagens de base dos modelos Flex. Não selecione latest.

Especifique a imagem base no seguinte formato:

gcr.io/dataflow-templates-base/IMAGE_NAME:VERSION_NAME

Substitua:

Como especificar opções de pipeline

Para mais informações sobre as opções de pipeline compatíveis diretamente com os modelos flexíveis, leia Opções de pipeline.

Use qualquer opção de pipeline do Apache Beam indiretamente. Se você estiver usando um arquivo metadata.json para o job de modelo flexível, inclua essas opções de pipeline no arquivo. Esse arquivo de metadados precisa seguir o formato em TemplateMetadata. Para ver um exemplo de arquivo metadata.json, consulte a amostra Modelo flexível de SQL de streaming.

Caso contrário, ao iniciar o job de modelo flexível, transmita essas opções de pipeline usando o campo de parâmetros.

API

Inclua opções de pipeline usando o campo parameters.

gcloud

Inclua opções de pipeline usando a sinalização parameters.

Ao transmitir parâmetros do tipo List ou Map, pode ser necessário definir parâmetros em um arquivo YAML e usar o flags-file. Para ver um exemplo dessa abordagem, consulte a etapa "Criar um arquivo com parâmetros..." nesta solução.

A seguir