O uso de variáveis ajuda a evitar os riscos de segurança associados a credenciais em texto simples, como um AccessKey ou uma senha. A reutilização de variáveis também evita a repetição de código e valores, o que simplifica o gerenciamento de configurações. Há suporte para variáveis em jobs SQL, implantações JAR/Python, configurações de log e definições da interface. Este tópico descreve como criar variáveis e usá-las em diferentes cenários.
Informações de contexto
Uma variável é composta por um nome e um valor. O nome, definido por você, atua como um espaço reservado para os dados reais e geralmente reflete o seu significado. O valor representa os dados reais aos quais o nome se refere. O Flink oferece suporte a dois tipos de variáveis: variáveis de implantação e variáveis de namespace. As diferenças são as seguintes:
Variável de implantação: pode ser usada apenas em uma única implantação, como em um job SQL de ETL ou como argumento da função principal em uma implantação JAR/Python. O formato para referenciar uma variável de implantação é ${variable_name}. Para mais informações, consulte {{XREF_0}}.
Variável de namespace: pode ser usada em todo um namespace. Isso inclui o uso em Development (para ingestão de dados, ETL e scripts de consulta), como argumentos da função principal em implantações JAR/Python, em configurações de parâmetros de implantação, configurações de log e definições da interface (como a criação de um Catalog). O formato para referenciar uma variável de namespace é ${secret_values.variable_name}. Para saber como criá-las e usá-las, consulte {{XREF_1}}.
Notas de uso
Não é possível configurar vários valores para um único nome de variável.
Evite usar palavras-chave como nomes de variáveis.
Em jobs SQL, o uso de variáveis é permitido apenas em tabelas temporárias (CREATE TEMPORARY TABLE). O uso de uma variável em uma tabela persistente (CREATE TABLE) causa mau funcionamento da tabela.
Variáveis de implantação
Os nomes das variáveis de implantação devem ser exclusivos dentro de uma única implantação.
ETL (job SQL)
Você pode usar variáveis durante o desenvolvimento de jobs SQL, inclusive como argumentos para funções personalizadas. Também é possível modificar os valores das variáveis ao iniciar o job.
No painel de navegação à esquerda do console do Realtime Compute for Apache Flink, clique em .
-
No editor SQL do job SQL de destino, crie variáveis usando o formato ${variable_name}, conforme mostrado no exemplo a seguir.
Ao usar como parâmetro em uma cláusula WITH, coloque a variável entre aspas simples: '${variable_name}'.
Ao usar em outros locais (como nomes de tabelas ou campos SQL), coloque a variável entre crases:
${variable_name}.
<Appender name="SLS" type="SLS"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ --> <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line --> <Property name="project">YOUR-SLS-PROJECT</Property> <Property name="logStore">YOUR-SLS-LOGSTORE</Property> <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> <Property name="accessKeyId">${secret_values.accessKeyId}</Property> <Property name="accessKeySecret">${secret_values.accessKeySecret}</Property> <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> <Property name="deploymentName">{{ deploymentName }}</Property> <Property name="flushIntervalSeconds">10</Property> <Property name="flushIntervalEventCount">100</Property> </Appender> -
O Flink identifica automaticamente as variáveis de implantação que usam esse formato no job SQL. Você deve fornecer valores para essas variáveis.
-
Método 1: O painel Job Variables aparece no editor SQL. Insira os valores nesse painel.
No painel Job Variables, configure os pares chave-valor:
source_name=datagen,test_name=nameeblackhole=blackhole. -
Método 2: Clique em More Configurations no lado direito. Insira os valores na seção Job Variables.
Por exemplo, configure a variável
source_namecomodatagen,test_namecomonameeblackholecomoblackhole. Em seguida, você pode referenciar esses valores no seu código SQL usando a sintaxe${variable_name}.
-
-
Após a implantação do job, visualize suas variáveis na guia Deployment Details da página de detalhes do job, em Deployments.
Nas propriedades do job, a linha Job Variables exibe as variáveis configuradas (como source_name, test_name e blackhole) e seus respectivos valores.
-
Clique em Start na coluna Actions do job de destino. Modifique os valores das variáveis no painel de inicialização do job.
ImportanteAs alterações feitas nos valores das variáveis no painel de inicialização do job aplicam-se apenas à execução atual do job. Elas não alteram os valores definidos no job SQL.
No painel de inicialização do job, selecione o modo stateless start ou stateful start. Se você selecionar a inicialização com estado, poderá configurar opções de recuperação, como Recover from latest state. A seção Job Variables exibe as variáveis e seus valores padrão, como
source_namedefinido comodatagen,test_namecomonameeblackholecomoblackhole. Modifique-os conforme necessário e clique em Start.
Implantação JAR/Python
Você pode usar variáveis como argumentos para a função principal em implantações JAR/Python.
Método 1: Usar variáveis de namespace
Crie uma nova variável. Para obter detalhes, consulte {{XREF_2}}.
No console do Realtime Compute for Apache Flink, acesse e clique em Deploy Job.
-
No campo Entry Point Main Arguments, insira o argumento usando o formato
--variable_in_code ${secret_values.variable_in_management}.Se um nome de variável precisar incluir caracteres especiais, consulte {{XREF_3}}.
Por exemplo, insira
--akid ${secret_values.test1}e--aksecret ${secret_values.test2}, com cada parâmetro em uma nova linha.Para obter detalhes sobre outros parâmetros de implantação, consulte {{XREF_4}}.
Clique em Deploy.
Clique em Start na coluna Actions da implantação de destino.
Método 2: Usar variáveis de implantação
No console do Realtime Compute for Apache Flink, acesse e clique em Deploy Job.
-
No campo Entry Point Main Arguments, insira o argumento usando o formato
--variable_in_code ${deployment_variable_name}e, em seguida, forneça o valor da variável na seção Job Variables abaixo.Se um nome de variável precisar incluir caracteres especiais, consulte {{XREF_5}}.
Por exemplo, insira
--akid ${test1} --aksecret ${test2}, adicione as variáveistest1(AccessKey ID) etest2(AccessKey Secret) e insira as credenciais reais como seus valores padrão.Para obter detalhes sobre outros parâmetros de implantação, consulte {{XREF_6}}.
Clique em Deploy.
-
Clique em Start na coluna Actions da implantação de destino. Modifique os valores das variáveis no painel de inicialização do job.
Selecione um modo de inicialização: stateless start (sem estado inicial) ou stateful start (a partir de um estado existente). Você também pode ativar o Configuration Autotuning.
Variáveis de namespace
Criar uma variável
Apenas membros com permissões de editor ou superiores, ou membros com a permissão específica para criar variáveis, podem criar variáveis.
Faça login no console do Realtime Compute for Apache Flink. Encontre o workspace de destino e clique em Console na coluna Actions.
-
No painel de navegação à esquerda, clique em e clique em Add Variable.
Parâmetro
Descrição
Variable Name
O nome da variável deve ser exclusivo dentro do namespace e não pode ser alterado após a criação.
Variable Value
Os valores das variáveis diferenciam maiúsculas de minúsculas. O valor pode ser modificado após a criação. Para obter detalhes, consulte {{XREF_7}}.
Type (Plaintext/Ciphertext)
O tipo não pode ser alterado após a criação.
-
Plaintext: O valor da variável fica diretamente visível na página Variables.
-
Ciphertext: O valor da variável fica oculto.
Após a criação da variável, você pode visualizar seu nome, tipo, valor e hora de criação na lista da página Variables. Você também pode selecionar Edit ou Delete para a variável.
-
Clique em OK.
Usar uma variável
Após criar uma variável, você pode referenciá-la usando o formato ${secret_values.variable_name}. Substitua "variable_name" pelo nome da sua variável.
Development
Você pode usar variáveis de namespace na seção Development do console do Realtime Compute for Apache Flink.
ETL (SQL)
Você pode usar variáveis no DDL de um job SQL referenciando-as com o formato ${secret_values.variable_name}, conforme mostrado no exemplo a seguir.
Ao usar como parâmetro em uma cláusula WITH, coloque a variável entre aspas simples: '${secret_values.variable_name}'.
Ao usar em outros locais (como nomes de tabelas ou campos SQL), coloque a variável entre crases:
${secret_values.variable_name}.
<Appender name="SLS" type="SLS">
<Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>
<!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
<Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
<Property name="project">YOUR-SLS-PROJECT</Property>
<Property name="logStore">YOUR-SLS-LOGSTORE</Property>
<Property name="endpoint">YOUR-SLS-ENDPOINT</Property>
<Property name="accessKeyId">${secret_values.accessKeyId}</Property>
<Property name="accessKeySecret">${secret_values.accessKeySecret}</Property>
<Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property>
<Property name="deploymentName">{{ deploymentName }}</Property>
<Property name="flushIntervalSeconds">10</Property>
<Property name="flushIntervalEventCount">100</Property>
</Appender>
Ingestão de dados
<Appender name="SLS" type="SLS">
<Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>
<!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
<Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
<Property name="project">YOUR-SLS-PROJECT</Property>
<Property name="logStore">YOUR-SLS-LOGSTORE</Property>
<Property name="endpoint">YOUR-SLS-ENDPOINT</Property>
<Property name="accessKeyId">${secret_values.accessKeyId}</Property>
<Property name="accessKeySecret">${secret_values.accessKeySecret}</Property>
<Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property>
<Property name="deploymentName">{{ deploymentName }}</Property>
<Property name="flushIntervalSeconds">10</Property>
<Property name="flushIntervalEventCount">100</Property>
</Appender>
Consulta de dados
<Appender name="SLS" type="SLS">
<Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>
<!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
<Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
<Property name="project">YOUR-SLS-PROJECT</Property>
<Property name="logStore">YOUR-SLS-LOGSTORE</Property>
<Property name="endpoint">YOUR-SLS-ENDPOINT</Property>
<Property name="accessKeyId">${secret_values.accessKeyId}</Property>
<Property name="accessKeySecret">${secret_values.accessKeySecret}</Property>
<Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property>
<Property name="deploymentName">{{ deploymentName }}</Property>
<Property name="flushIntervalSeconds">10</Property>
<Property name="flushIntervalEventCount">100</Property>
</Appender>
Implantação JAR/Python
Você pode usar variáveis como argumentos para a função principal em implantações JAR/Python.
No console de desenvolvimento, acesse e clique em Deploy Job.
-
No campo Entry Point Main Arguments, insira o argumento usando o seguinte formato.
Exemplo:
--input ${secret_values.input}, onde${secret_values.variable_name}é a sintaxe para referenciar uma variável.Para obter detalhes sobre outros parâmetros de implantação, consulte {{XREF_8}}.
Clique em Deploy.
Configuração de parâmetros de tempo de execução
Você pode usar variáveis nos parâmetros de tempo de execução do job.
Acesse a página e clique no job de destino.
-
Na guia Deployment Details, clique em Edit no canto superior direito da seção Runtime Parameter Configuration e configure os parâmetros. Você pode usar variáveis como valores de parâmetro, conforme mostrado no exemplo a seguir.
Na área de texto Other Configurations, use o formato
${secret_values.xxx}para referenciar variáveis. Por exemplo, para configurar as credenciais de acesso do Jindo OSS, defina parâmetros comofs.oss.jindo.buckets,fs.oss.jindo.accessKeyIdefs.oss.jindo.accessKeySecret. Clique em Save.
Configuração de log
-
Acesse a página de configuração de log.
Para configurar o log de um único job, consulte {{XREF_9}}.
Para configurar o log de todos os jobs em um namespace, consulte {{XREF_10}}.
-
Use variáveis na configuração de log.
Por exemplo, ao configurar os logs do job para serem enviados ao SLS, você pode usar variáveis para 'accessKeyId' e 'accessKeySecret'. Para obter informações completas sobre a configuração de saída de log, consulte {{XREF_11}}.
<Appender name="SLS" type="SLS"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ --> <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line --> <Property name="project">YOUR-SLS-PROJECT</Property> <Property name="logStore">YOUR-SLS-LOGSTORE</Property> <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> <Property name="accessKeyId">${secret_values.accessKeyId}</Property> <Property name="accessKeySecret">${secret_values.accessKeySecret}</Property> <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> <Property name="deploymentName">{{ deploymentName }}</Property> <Property name="flushIntervalSeconds">10</Property> <Property name="flushIntervalEventCount">100</Property> </Appender>
Interface
Ao criar um Catalog pela interface, você pode usar variáveis nos itens de configuração.
No painel de navegação à esquerda do console do Realtime Compute for Apache Flink, clique em Catalogs.
-
Use variáveis na página Create Catalog. O exemplo a seguir mostra como usar uma variável chamada
mysqlpasswordpara o parâmetro de senha em um MySQL Catalog.No campo password, insira
${secret_values.mysqlpassword}para referenciar o valor secreto.
Editar ou excluir uma variável
Tenha cuidado ao editar ou excluir variáveis. Essa ação pode fazer com que as implantações que as referenciam falhem ou exijam a reimplantação de jobs online. Jobs em execução não são afetados.
Faça login no console do Realtime Compute for Apache Flink. Encontre o workspace de destino e clique em Console na coluna Actions.
-
No painel de navegação à esquerda, clique em . Encontre a variável de destino e clique em Edit ou Delete na coluna Actions.
-
Editar
Você pode alterar o valor de uma variável. Apenas membros com permissões de editor ou superiores podem editar variáveis.
-
Excluir
Apenas membros com permissões de editor ou superiores, ou membros com a permissão específica para excluir variáveis, podem excluir variáveis.
-
Documentos relacionados
Para saber como desenvolver um job SQL, consulte {{XREF_12}}.
Para obter informações sobre os parâmetros de implantação para implantações JAR/Python, consulte {{XREF_13}}.
Para saber como criar e usar Catalogs, consulte {{XREF_14}}.
Para obter detalhes sobre os conectores suportados, consulte {{XREF_15}}.