Pular para o conteúdo principal

Output SFTP

Acumula mensagens e as grava como arquivos em um servidor SFTP.

O arquivo não é fechado a cada mensagem: ele vai sendo preenchido, uma linha por mensagem, e é finalizado quando para de chegar dado novo por um tempo. É isso que evita milhares de arquivos minúsculos no servidor.

Campos

Conexão

CampoO que éPadrão
HostEndereço do servidor SFTP.
PortaPorta de conexão.22
UsuárioUsuário de acesso.
Secret (senha)O Secret com a senha.
Caminho remotoDiretório no servidor onde os arquivos serão gravados. Ex.: /uploads./

Arquivo

CampoO que éPadrão
Inatividade (segundos)Quanto tempo sem mensagem nova até o arquivo ser fechado e renomeado para o nome final. Enquanto está sendo escrito, o arquivo tem um nome temporário — só o nome final indica que ele está completo.300
Template do nome do arquivoComo o nome do arquivo é montado. Aceita funções de data e formatação — ex.: data-{{ now | date "2006-01-02" }}.json. A lista completa de funções está em masterminds.github.io/sprig.data-{{ now | date "2006-01-02" }}.json
Campo do cabeçalho (header line)Nome de um header da mensagem cujo valor é gravado como primeira linha do arquivo. Serve para arquivos CSV com cabeçalho. Deixe em branco se não precisar.vazio
Um arquivo por cabeçalho

Quando Campo do cabeçalho está preenchido e chega uma mensagem cujo valor daquele header é diferente do valor usado no arquivo atual, o arquivo é fechado e um novo é aberto. Assim, dados com layouts diferentes nunca se misturam no mesmo arquivo.

O que este Output precisa ler do tópico

ParteComo é usada
ValueGravado como uma linha do arquivo, seguido de quebra de linha
KeyNão é usada
HeadersSó o header nomeado em Campo do cabeçalho, se configurado

O conteúdo do Value é gravado como está — não é reformatado nem validado. Se o Value for JSON, o arquivo fica em formato NDJSON (um JSON por linha). Se for uma linha CSV, o arquivo fica em CSV.

Exemplo 1 — arquivo JSON por linha

Mensagens lidas do tópico:

Value: {"pedido":1234,"cliente":"ACME","total":199.90}
Value: {"pedido":1235,"cliente":"Contoso","total":88.00}
Value: {"pedido":1236,"cliente":"ACME","total":15.50}

Arquivo gravado em /uploads/data-2026-07-26.json:

{"pedido":1234,"cliente":"ACME","total":199.90}
{"pedido":1235,"cliente":"Contoso","total":88.00}
{"pedido":1236,"cliente":"ACME","total":15.50}

Exemplo 2 — arquivo CSV com cabeçalho

Com Campo do cabeçalho preenchido com header, e mensagens produzidas por um Transform:

Value: 1234;ACME;199.90 Headers: header=pedido;cliente;total
Value: 1235;Contoso;88.00 Headers: header=pedido;cliente;total

Arquivo gravado:

pedido;cliente;total
1234;ACME;199.90
1235;Contoso;88.00

Uma mensagem de Value vazio vira uma linha em branco no arquivo — veja Mensagens de Value vazio.

Como o arquivo é finalizado

  1. A primeira mensagem abre um arquivo temporário no Caminho remoto.
  2. Cada mensagem seguinte vira mais uma linha nele.
  3. Passados os segundos de Inatividade sem nada novo, o arquivo é fechado e renomeado para o nome final montado pelo template.

O nome temporário indica arquivo ainda em escrita — veja Arquivos e o conceito de "roll".