SFTP

Permite a configuração de um servidor SFTP que receberá os arquivos com o conteúdo das mensagens trafegadas.

Parâmetros

Parâmetros aceitos para esse tipo de sindicância de destino:

CampoDescriçãoValor

sftp.basic_auth

Autenticação básica do servidor

Tipo: object Valor padrão: {}

sftp.basic_auth.user_id

Identificador de acesso

Tipo: string Valor padrão: -

sftp.basic_auth.password

Senha de acesso

Tipo: string Valor padrão: -

sftp.file

Dados do arquivo a ser gerado

Tipo: object Valor padrão: {}

sftp.file.path

Caminho do arquivo gerado

Tipo: string Valor padrão: -

sftp.file.extension

Extensão do arquivo gerado

Tipo: enum[csv json] Valor padrão: csv

sftp.file.separator

Separador do arquivo gerado - caso necessário

Tipo: string Valor padrão: ;

sftp.file.max_size_mb

Tamanho máximo em MB do arquivo gerado

Tipo: int[1-100] Valor padrão: 100

sftp.file.period

Períodos de geração/envio dos arquivos para o servidor

Tipo: enum[1m 1h 2h 3h 4h 6h 8h 12h 1d] Valor padrão: 1d

sftp.file.schema

Esquema de campos do arquivo resultante. A ordem dos campos é respeitada.

Tipo: list Valor padrão: {}

sftp.file.schema.name

Nome do campo

Tipo: string Obrigatório

Requisição

curl --location '<HOST>/v1/configs' \
--header 'Content-Type: application/json' \
--header 'Authorization: <ACCESS-TOKEN>' \
--data '{
    "output": {
        "target": "localhost:22",
        "type": "SFTP",
        "sftp": {
          "period": "1d",
          "basic_auth": {
            "user_id": "USERNAME",
            "password": "PASSWORD"
          },
          "file": {
            "path": "folder/file.csv",
            "extension": "csv",
            "separator": ";",
            "max_size_mb": 100
          }
        }
    }
}'

Resposta

A resposta desse endpoint será no seguinte formato:

{
  "id": "FIREHOSE-ID",
  "output": {
    "target": "localhost:22",
    "type": "SFTP",
    "sftp": {
      "period": "1d",
      "basic_auth": {
        "user_id": "*",
        "password": "*"
      },
      "file": {
        "path": "folder/file.csv",
        "extension": "csv",
        "separator": ";",
        "max_size_mb": 100
      }
    }
  }
}

Funcionamento

Esse tipo de saída possui um comportamento diferente dependendo do conteúdo da mensagem trafegada.

JSON

Funcionamento quando o conteúdo (Content-Type) das mensagens trafegadas é um json.

Nesse caso as mensagens opcional são enviadas de imediato para o servidor. Ocorre a junção de todas as mensagens trafegadas em um determinado período em um arquivo que é então enviado ao servidor SFTP.

Esse período é configurado diretamente na configuração do Firehose. Atualmente ele suporta os seguintes valores:

PeríodoDescrição

1m

Gera um arquivo com as mensagens trafegadas na janela de um minuto

1h

Gera um arquivo com as mensagens trafegadas na janela de uma hora

2h

Gera um arquivo com as mensagens trafegadas na janela de duas horas

3h

Gera um arquivo com as mensagens trafegadas na janela de três horas

4h

Gera um arquivo com as mensagens trafegadas na janela de quatro horas

6h

Gera um arquivo com as mensagens trafegadas na janela de seis horas

8h

Gera um arquivo com as mensagens trafegadas na janela de oito horas

12h

Gera um arquivo com as mensagens trafegadas na janela de doze horas

1d

Gera um arquivo com as mensagens trafegadas na janela de 1 dia

Somente arquivos csv são suportados no momento.

Formato

O arquivo resultante possuirá uma coluna para cada campo do json da mensagem. Somente o primeiro nível do json fará parte do cabeçalho, portanto, documentos aninhados farão parte da coluna referente ao campo do primeiro nível do json.

Os campos da primeira mensagem processada para criação do arquivo serão considerados nas colunas, portanto, caso as mensagens trafegadas para um mesmo arquivo opcional contenham os mesmos campos podem haver campos que opcional serão adicionados.

O seguinte documento irá gerar o seguinte arquivo csv:

{
  "field1": "value",
  "field2": {
    "field3": "value3"
  },
  "field4": [
    "value4"
  ]
}

Resultado:

field1,field2,field4
value,map[field3:value3],[value4]

Nome do arquivo

O nome do arquivo resultante depende de como as mensagens entraram no fluxo do Firehose. Em todos os casos o tamanho máximo do arquivo gerado em MB será o informado no campo max_size_mb da configuração file da sindicância de destino, um sufixo com o índice do arquivo será adicionado se necessário.

  • Entrada via Delta Sharing

O nome do arquivo resultante será definido pelo valor informado no campo path da configuração file da sindicância de destino com adição do ID do arquivo parquet recuperado via Delta Sharing e da data da partição recuperada no formato yyyy-MM-dd.

  • Entrada via requisição HTTP

O nome do arquivo resultante será definido pelo valor informado na config file-path da mensagem com adição do sufixo: -yyyy-MM-dd_HH:mm-yyyy-MM-dd_HH:mm com a data inicial e final do período considerado. Por exemplo, suponha que o nome do arquivo informado no file-path tenha sido test.csv e foi gerado um arquivo para o período do dia 01/01/2023, o nome do arquivo no servidor SFTP será test-2023-01-01_00:00-2023-01-02_00:00.csv

Nesse caso para um mesmo período serão gerados N arquivos dependendo de quantos nomes de arquivo diferentes tenham sido passados no header file-path das mensagens.

  • Demais entradas

O nome do arquivo resultante será definido pelo valor informado no campo path da configuração file da sindicância de destino com adição do sufixo: -yyyy-MM-dd_HH:mm-yyyy-MM-dd_HH:mm com a data inicial e final do período considerado.

Demais tipos

Para os demais tipos de conteúdo da mensagem é realizada o envio imediato para o servidor SFTP configurado na saída.

Limitações

O token de verificação opcional será entregue nas mensagens nesse tipo de saída por se tratar de uma saída que requer autenticação.

No momento somente a autenticação básica via username e password é suportada.

Last updated