Armazenamento e Transferência de Arquivos

Azure Storage Blob Service

  • Descrição: o componente Azure Storage Blob Service é usado para armazenar e recuperar blobs (objeto binário grande) do serviço Azure Storage Blob usando APIs do Azure v12.

  • Exemplo

    • O fluxo começa com uma requisição POST para o endpoint /hello.

    • O componente azure-storage-blob é utilizado para conectar-se ao contêiner myblobcontainer na conta camelstorageaccount01.

    • Parâmetros:

      • credentialType: "SHARED_ACCOUNT_KEY": especifica que a autenticação será feita usando a chave de conta compartilhada.

      • operation: "listBlobs": define que a operação realizada será listar os blobs presentes no contêiner.

      • accessKey: "{{AWS_ACCESS_KEY}}": define a chave de acesso para autenticação, referenciada em uma variável.

    • Após listar os blobs, o fluxo registra informações no log com o identificador myLogger.

Script

Diagrama

- from:
    uri: "rest:post:/hello"
    steps:
    - to:
        uri: "azure-storage-blob://camelstorageaccount01/myblobcontainer"
        parameters:
          credentialType: "SHARED_ACCOUNT_KEY"
          operation: "listBlobs"
          accessKey: "{{AWS_ACCESS_KEY}}"
    - to:
        uri: "log:myLogger"
component azure storage blob service

AWS S3 Storage Service

  • Descrição: o componente AWS S3 Storage Service permite que você interaja com o serviço Amazon S3 (Simple Storage Service) da AWS e manipule dados em buckets S3 diretamente através das rotas de integração.

  • Exemplo

    • O fluxo começa com uma requisição GET ao endpoint /file/retrieve.

    • O conector recupera um arquivo do bucket S3:

      • uri: define o bucket (nome ou ARN).

      • Os parâmetros incluem:

        • fileName: define o caminho do arquivo no bucket (por exemplo, path/to/myfile.txt).

        • accessKey e secretKey: são credenciais de autenticação para acessar o bucket, referenciadas como variáveis de ambiente.

    • Após o arquivo ser recuperado com sucesso, o conteúdo do arquivo é registrado no log.

Script

Diagrama

- from:
    uri: "rest:get:/file/retrieve"
    steps:
      - to:
          uri: "aws2-s3:bucketNameOrArn"
          parameters:
            fileName: "path/to/myfile.txt"
            accessKey: "{{ACCESS_KEY}}"
            secretKey: "{{SECRET_KEY}}"
      - log:
          message: "File retrieved successfully: ${body}"
component aws3 connector

FTP/FTPS

  • Descrição: o componente FTP fornece acesso a sistemas de arquivos remotos através dos protocolos FTP e SFTP. Funcionamento apenas no modo passivo.

O FTPS é uma versão segura do FTP, que adiciona suporte para SSL/TLS para criptografar a conexão.
  • Exemplo

    • O fluxo começa com o download de um arquivo de um servidor FTP. O servidor é especificado pela variável ftp_host.

    • Transforma o conteúdo do arquivo substituindo caracteres acentuados 'ã', 'â', 'á', 'à' e 'ä' por 'a'.

    • Depois faz o upload do arquivo modificado para o mesmo ou outro diretório no servidor FTP.

Script

Diagrama

- from:
    id: ftp-input
    uri: "ftp:{{ftp_host}}/download"
    parameters:
      fileName: "{{ftp_filename_extension_input}}"
      password: "{{ftp_password}}"
      username: "{{ftp_username}}"
      delay: 10000
      passiveMode: true
    steps:
      - transform:
          simple: ${bodyAs(String).replaceAll('[ãâáàä]', 'a')}
      - to:
          id: ftp-output
          uri: "ftp:{{ftp_host}}/upload"
          parameters:
            fileName: "{{ftp_filename_extension_output}}"
            password: "{{ftp_password}}"
            username: "{{ftp_username}}"
            passiveMode: true
component ftp connector

Google Storage

  • Descrição: o componente Google Storage permite a integração com o serviço Google Cloud Storage, facilitando o armazenamento e a recuperação de objetos em buckets do Google Cloud. Como conector, ele pode ser configurado para realizar upload de arquivos, listar objetos e remover itens de buckets. A integração oferece suporte ao envio de diferentes tipos de arquivos, além de permitir personalização de cabeçalhos, controle de sobrescrita e tratamento de erros.

  • Exemplo

    • O fluxo recebe uma requisição do tipo GET.

    • Conecta-se ao Google Cloud Storage usando as credenciais da conta de serviço e apaga o objeto especificado no bucket.

    • Depois registra no log que o objeto foi excluído.

Script

Diagrama

- from:
    uri: rest:get:/simple
    steps:
      - to:
          uri: google-storage:my bucket
          parameters:
            serviceAccountKey: my account key
            objectName: object name
            operation: deleteObject
      - log:
          message: object deleted
component google storage

SFTP

  • Descrição: o componente SFTP fornece acesso a sistemas de arquivos remotos através dos protocolos FTP e SFTP. Funcionamento apenas no modo passivo.

  • Exemplo

    • O fluxo do exemplo é configurado para ser acionado por um agendador Quartz, que dispara a cada minuto.

    • Quando o gatilho é ativado, o corpo da mensagem é definido como Hello World.

    • O fluxo então envia essa mensagem como um arquivo chamado helloworld.txt para um servidor SFTP no endereço demo.wftpserver.com, na porta 2222, no diretório /upload.

Script

Diagrama

- from:
    uri: "quartz://ipaas/trigger"
    parameters:
      cron: "* * * * *"
    steps:
    - setBody:
        constant: "Hello World"
    - to:
        uri: "sftp://demo.wftpserver.com:2222/upload"
        parameters:
          username: "demo"
          password: "demo"
          fileName: "helloworld.txt"
          passiveMode: true
component sftp

SMB

  • Descrição: o componente SMB permite integrar o fluxo com diretórios compartilhados via protocolo SMB/CIFS, possibilitando o envio de arquivos diretamente a um servidor remoto.

    É possível configurar:

    • Caminho do servidor: endereço completo do compartilhamento SMB, por exemplo: smb://server/share/folder. (aba Common)

    • Credenciais de autenticação: informações de acesso, como usuário, senha e, quando aplicável, domínio.(aba Security)

    • Opções adicionais: parâmetros para controlar o comportamento do envio, como sobrescrever arquivos existentes, criar diretórios ausentes e definir permissões de acesso.

      A integração suporta o envio de múltiplos arquivos em uma única execução e permite configurar parâmetros de controle e cabeçalhos de mensagem para personalizar o processamento e o roteamento dos arquivos enviados.

  • Sintaxe da URI: smb:hostname:port/shareName

  • Campos principais

    Parâmetros de caminho (path parameters)

    Nome Descrição Padrão Tipo

    hostname

    (obrigatório) O nome do host ou endereço IP do compartilhamento.

    -

    String

    port

    O número da porta do compartilhamento.

    445

    int

    shareName

    (obrigatório) O nome do diretório compartilhado.

    -

    String

    Parâmetros de consulta (query parameters)

    Nome Descrição Padrão Tipo

    password

    (security) A senha para acessar o compartilhamento.

    -

    String

    username

    (security) O nome de usuário necessário para acessar o compartilhamento.

    -

    String

    O parâmetro de consulta Path, da aba Common, é um campo opcional desde a versão 4.8.0 do Apache Camel.
  • Exemplo

    • O fluxo é acionado por uma requisição HTTP GET no endpoint /test.

    • O corpo (setBody) da mensagem é definido com o texto It worked!.

    • O header (setHeader) CamelFileName é definido como poc-smb.txt, indicando o nome do arquivo que será criado/enviado.

    • O conteúdo é enviado para um compartilhamento SMB (Windows File Share) no endereço server-example, porta 445, no compartilhamento myshare. Os parâmetros são as credenciais username e password.

    • Após o envio, é registrado um log com a mensagem Concluído com sucesso.

      Em resumo, o fluxo recebe uma requisição GET, cria um arquivo chamado poc-smb.txt com o conteúdo "It worked!" em um compartilhamento SMB remoto, e registra um log ao final.

Script

Diagrama

- from:
    uri: rest:get:/test
    steps:
      - setBody:
          constant: It worked!
      - setHeader:
          name: CamelFileName
          constant: poc-smb.txt
      - to:
          uri: "smb:server-example:445/myshare"
          parameters:
            username: yourusername
            password: yourpassword
      - log:
          message: Concluído com sucesso
smb connector
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]