FTP

Com o conector do FTP, você pode se conectar a um servidor FTP e realizar operações de transferência de arquivos.

Antes de começar

Antes de usar o conector do FTP, faça o seguinte:

  • No seu projeto do Google Cloud, faça o seguinte:
    • Conceder o papel do IAM roles/connectors.admin ao usuário e configurar o conector.
    • Conceda os seguintes papéis de IAM à conta de serviço que você quer usar para o conector:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      Uma conta de serviço é um tipo especial de Conta do Google destinada a representar um usuário não humano que precisa ser autenticado e autorizado a acessar dados nas APIs do Google. Se você não tiver uma conta de serviço, será necessário criar uma. Para mais informações, consulte Como criar uma conta de serviço.

    • Ative os seguintes serviços:
      • secretmanager.googleapis.com (API Secret Manager)
      • connectors.googleapis.com (API Connectors)

      Para entender como ativar os serviços, consulte Como ativar serviços.

    Se esses serviços ou permissões não tiverem sido ativados no seu projeto, você precisará ativá-los ao configurar o conector.

Configurar o conector

Para configurar o conector, crie uma conexão com a fonte de dados (sistema de back-end). Uma conexão é específica a uma fonte de dados. Isso significa que, se você tiver muitas fontes de dados, precisará criar uma conexão separada para cada uma. Para criar uma conexão, siga estas etapas:

  1. No console do Cloud, acesse a página Integration Connectors > Conexões e selecione ou crie um projeto do Google Cloud.

    Acessar a página "Conexões"

  2. Clique em + Criar novo para abrir a página Criar conexão.
  3. Na seção Local, escolha o local da conexão.
    1. Região: selecione um local na lista suspensa.

      Para conferir a lista de todas as regiões com suporte, consulte Locais.

    2. Clique em Próxima.
  4. Na seção Detalhes da conexão, faça o seguinte:
    1. Conector: selecione FTP na lista suspensa de conectores disponíveis.
    2. Versão do conector: selecione a versão do conector na lista suspensa de versões disponíveis.
    3. No campo Nome da conexão, insira um nome para a instância de conexão

      Os nomes de conexão precisam atender aos seguintes critérios:

      • Os nomes de conexões podem usar letras, números ou hifens.
      • As letras precisam ser minúsculas.
      • Os nomes das conexões precisam começar com uma letra e terminar com uma letra ou um número.
      • Os nomes das conexões não podem ter mais de 49 caracteres.
    4. Como opção, insira uma Descrição para a instância de conexão.
    5. Como opção, ative o Cloud Logging e selecione um nível de registro. Por padrão, o nível de registro é definido como Error.
    6. Conta de serviço: selecione uma conta de serviço que tenha os papéis necessários.
    7. Opcionalmente, defina as Configurações do nó de conexão:

      • Número mínimo de nós: digite o número mínimo de nós de conexão.
      • Número máximo de nós: digite o número máximo de nós de conexão.

      Um nó é uma unidade (ou réplica) de uma conexão que processa transações. Mais nós são necessários para processar mais transações para uma conexão e, por outro lado, menos nós são necessários para processar menos transações. Para entender como os nós afetam os preços do conector, consulte Preços dos nós de conexão. Se você não inserir qualquer valor, por padrão, os nós mínimos serão definidos como 2 (para melhor disponibilidade) e os nós máximos serão definidos como 50.

    8. Profundidade de recuperação de arquivos: especifique o nível de profundidade das pastas que você quer consultar na tabela raiz.
    9. Passivo: controla se o servidor será direcionado para o modo passivo. Recomendado quando protegido por um firewall.
    10. Caminho remoto: o caminho atual no servidor FTP.
    11. Modo SSL: é o mecanismo de autenticação usado para a conexão com o servidor FTP.
    12. Profundidade da tabela: o nível de profundidade para exibir subpastas como visualizações.
    13. Usar MLSD: usa fichas para processamento de máquinas. Usado apenas para servidores FTP.
    14. Outra opção é clicar em + Adicionar rótulo para adicionar um rótulo à conexão na forma de um par de chave-valor.
    15. Clique em Próxima.
  5. Na seção Destinos, insira os detalhes do host remoto (sistema de back-end) ao qual você quer se conectar.
    1. Tipo de destino: selecione um Tipo de destino.
      • Selecione Endereço do host na lista para especificar o nome do host ou o endereço IP do destino.
      • Para estabelecer uma conexão particular com seus sistemas de back-end, Selecione Anexo de endpoint na lista e depois selecione o anexo de endpoint necessário. na lista Endpoint Attachment.

      Para estabelecer uma conexão pública com os sistemas de back-end com mais segurança, considere configurar endereços IP de saída estáticos para suas conexões e configure as regras de firewall para autorizar apenas os endereços IP estáticos específicos.

      Para inserir outros destinos, clique em + Adicionar destino.

    2. Clique em Próxima.
  6. Na seção Autenticação, insira os detalhes da autenticação.
    1. Selecione um Tipo de autenticação e insira os detalhes relevantes.

      Os seguintes tipos de autenticação são compatíveis com a conexão FTP:

      • Nome de usuário e senha
    2. Para entender como configurar esses tipos de autenticação, consulte Configurar autenticação.

    3. Clique em Next.
  7. Revisão: revise os detalhes de conexão e autenticação.
  8. Clique em Criar.

Configurar a autenticação

Digite os detalhes com base na autenticação que você quer usar.

  • Nome de usuário e senha
    • Nome de usuário: o nome de usuário do FTP a ser usado para a conexão.
    • Senha: o Secret do Secret Manager que contém a senha associada ao nome de usuário do FTP.

Entidades, operações e ações

Todos os Integration Connectors fornecem uma camada de abstração para os objetos do aplicativo conectado. Só é possível acessar os objetos de um aplicativo por esta abstração. A abstração é exposta a você como entidades, operações e ações.

  • Entidade: uma entidade pode ser considerada um objeto ou um conjunto de propriedades no aplicativo ou serviço conectado. A definição de uma entidade difere de um conector para outro. Por exemplo, em um conector de banco de dados, as tabelas são as entidades, em um conector de servidor de arquivos, as pastas são as entidades e, em um conector de sistema de mensagens, as filas são as entidades.

    No entanto, é possível que um conector não aceite ou não tenha entidades. Nesse caso, a lista Entities estará vazia.

  • Operação: uma operação é a atividade que pode ser realizada em uma entidade. É possível executar qualquer uma das seguintes operações em uma entidade:

    Selecionar uma entidade na lista disponível gera uma lista de operações disponíveis para ela. Para uma descrição detalhada das operações, consulte as operações de entidades da tarefa "Conectores". No entanto, se um conector não oferecer suporte a nenhuma das operações de entidade, essas operações sem suporte não serão listadas na lista Operations.

  • Ação: uma ação é uma função de primeira classe disponibilizada para a integração por meio da interface do conector. Uma ação permite fazer alterações em uma ou mais entidades e varia de um conector para outro. Normalmente, uma ação tem alguns parâmetros de entrada e um de saída. No entanto, é possível que o conector não ofereça suporte a nenhuma ação. Nesse caso, a lista Actions estará vazia.

Limitações do sistema

O conector do FTP pode processar uma transação por segundo, por , e limita todas as transações além desse limite. Por padrão, os Integration Connectors alocam dois nós (para melhor disponibilidade) para uma conexão.

Para informações sobre os limites aplicáveis aos Integration Connectors, consulte Limites.

Ações

Esta seção lista algumas das ações aceitas pelo conector. Para entender como configurar as ações, consulte Exemplos de ação.

Ação de upload

A tabela a seguir descreve os parâmetros de entrada da ação Upload.

Nome do parâmetro Tipo de dados Obrigatório Descrição
Conteúdo String Não Conteúdo a ser enviado como um arquivo.
ContentBytes String Não Conteúdo de bytes (como uma string Base64) para fazer upload como um arquivo. Use para fazer upload de dados binários.
HasBytes Booleano Não Especifica se o conteúdo precisa ser enviado como bytes. O valor padrão é false.
RemoteFile String Sim O nome do arquivo no host remoto.
Substituir Booleano Não Especifica se o arquivo remoto precisa ser substituído. O valor padrão é false.

Veja como configurar a ação Upload em Exemplos.

Ação de download

A tabela a seguir descreve os parâmetros de entrada da ação Download.

Nome do parâmetro Tipo de dados Obrigatório Descrição
RemoteFile String Sim O nome do arquivo no host remoto.
HasBytes Booleano Não Especifica se o download do conteúdo deve ser feito em bytes. O valor padrão é false.

Veja como configurar a ação Download em Exemplos.

Ação MoveFile

A tabela a seguir descreve os parâmetros de entrada da ação MoveFile.

Nome do parâmetro Tipo de dados Obrigatório Descrição
RemoteFile String Sim O caminho do arquivo remoto que será movido.
DestinationPath String Sim O novo caminho para onde você quer mover o arquivo.

Veja como configurar a ação MoveFile em Exemplos.

Ação RenomearFile

A tabela a seguir descreve os parâmetros de entrada da ação RenameFile.

Nome do parâmetro Tipo de dados Obrigatório Descrição
RemoteFile String Sim Caminho e nome do arquivo remoto que será renomeado.
NewFileName String Sim Novo nome do arquivo remoto.

Veja como configurar a ação RenameFile em Exemplos.

Exemplos

Nesta seção, descrevemos como executar algumas das operações e ações da entidade neste conector. Os exemplos descrevem as seguintes operações:

  • Listar todos os arquivos no diretório
  • Listar arquivos que correspondem a um padrão em um diretório
  • Mover um arquivo
  • Renomear um arquivo
  • Excluir um arquivo
  • Fazer upload de um arquivo de texto ASCII
  • Fazer upload de um arquivo binário
  • Fazer o download de um arquivo de texto ASCII
  • Fazer o download de um arquivo binário

A tabela a seguir lista os cenários de exemplo e a configuração correspondente na tarefa Connectors:

Tarefa Comando de amostra Configuração
Listar todos os arquivos no diretório ls /
  1. Na caixa de diálogo Configure connector task, clique em Entities.
  2. Selecione a entidade Root e, em seguida, a operação List.
  3. Clique em Concluído.
Listar arquivos .csv em um diretório ls /tmp/*.csv
  1. Na caixa de diálogo Configure connector task, clique em Entities.
  2. Selecione o diretório base (/tmp) na lista Entity.
  3. Selecione a operação List e clique em Concluído.
  4. Defina a cláusula de filtro. Para definir a cláusula, na seção Entrada de tarefas da tarefa Conectores, clique em filterClause e, em seguida, insira FilePath LIKE '/tmp/%.csv' no Valor padrão.
Mover um arquivo mv /tmp/dir_A/hello_world.txt /dir_B/dir_C/
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação MoveFile e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Connectors, clique em connectorInputPayload e insira um valor semelhante ao seguinte no campo Default Value:
    {
    "RemoteFile": "/tmp/dir_A/hello_world.txt",
    "DestinationPath": "/dir_B/dir_C/"
    }

Neste exemplo, o arquivo /tmp/dir_A/hello_world.txt é movido para o diretório /dir_B/dir_C/. A execução desse exemplo retorna uma resposta semelhante para o seguinte na variável de saída connectorOutputPayload da tarefa do conector:

[{
"Success":"true"
}]
Renomear um arquivo mv /tmp/hello_world.txt /tmp/hello_world_new.txt
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação RenameFile e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Connectors, clique em connectorInputPayload e insira um valor semelhante ao seguinte no campo Default Value:
    {
    "RemoteFile": "/tmp/hello_world.txt",
    "NewFilename": "hello_world_new.txt"
    }

Neste exemplo, o arquivo hello_world.txt é renomeado como hello_world_new.txt. A execução desse exemplo retorna uma resposta semelhante para o seguinte na variável de saída connectorOutputPayload da tarefa do conector:

[{
"Success":"true"
}]
Excluir um arquivo rm /tmp/myfile.csv
  1. Na caixa de diálogo Configure connector task, clique em Entities.
  2. Na lista Entity, selecione o diretório base que tem o arquivo que será movido.
  3. Selecione a operação Delete e clique em Concluído.
  4. Defina o ID da entidade como o caminho completo do arquivo. Para definir o ID da entidade, na seção Task Input da tarefa Connectors, clique em entityId e digite /tmp/myfile.csv no campo Default Value.

    Como alternativa, em vez de especificar o entityId, você também pode definir a filterClause como FilePath LIKE '/tmp/myfile.csv'.

Fazer upload de um arquivo de texto ASCII put file_1.txt /tmp/file_1.txt
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação Upload e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Connectors, clique em connectorInputPayload e insira o seguinte no campo Default Value:
    {
      "Content": "This is a sample text!\r\n",
      "RemoteFile": "/tmp/file_1.txt",
      "Overwrite": true
    }
  4. Este exemplo cria o arquivo file_1.txt que tem o conteúdo This is a sample text! no arquivo /tmp. Qualquer arquivo com o mesmo nome será substituído porque o valor do atributo Overwrite é true.

    Definir o atributo Overwrite é opcional. Por padrão, o valor é false.

Fazer upload de um arquivo binário put image_1.png /tmp/image_1.png Para fazer upload de um conteúdo binário, primeiro é necessário codificar o conteúdo no formato Base64. Você pode escolher a ferramenta que quiser para codificar o conteúdo. As etapas para codificar o conteúdo estão fora do escopo deste documento. Depois de criar o conteúdo como uma string Base64, siga estas etapas:
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação Upload e clique em Concluído.
  3. Na seção Task Input da tarefa Connectors, clique em connectorInputPayload e insira o seguinte no campo Default Value:
    {
      "ContentBytes": "SGVsbG8gd29ybGQ=",
      "RemoteFile": "/tmp/image_1.png",
      "Overwrite": true,
      "HasBytes": true
    }
  4. Este exemplo cria o arquivo image_1.png com o conteúdo conforme especificado no campo ContentBytes. O arquivo é criado no diretório /tmp do servidor FTP. Qualquer arquivo com o mesmo nome será substituído porque o valor do atributo Overwrite é true.

    Definir o atributo Overwrite é opcional. Por padrão, o valor é false.

Fazer o download de um arquivo de texto ASCII get /tmp/myfile.txt
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação Download e clique em Concluído.
  3. Na seção Task Output da tarefa Connectors, clique em connectorInputPayload e insira o seguinte no campo Default Value:
    {
    "RemoteFile": "/tmp/myfile.txt"
    }

O conteúdo do arquivo baixado está disponível como uma string no campo Content do parâmetro de resposta connectorOutputPayload da tarefa do Conector.

Fazer o download de um arquivo binário get /tmp/myfile.png
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação Download e clique em Concluído.
  3. Na seção Task Output da tarefa Connectors, clique em connectorInputPayload e insira o seguinte no campo Default Value:
    {
    "RemoteFile": "/tmp/myfile.png",
    "HasBytes" : true
    }

O conteúdo do arquivo transferido por download está disponível como uma string codificada em Base64 no campo ContentBytes do parâmetro de resposta connectorOutputPayload da tarefa do conector.

Esquema JSON para payload

Todos os objetos de entidade em uma conexão FTP têm um esquema JSON predefinido. Entender bem o esquema permite que você configure facilmente os valores de payload de entrada ou saída. Os objetos de entidade em uma conexão FTP usam o seguinte esquema JSON:

  {
    "type": "object",
    "properties": {
      "FilePath": {
        "type": "string",
        "readOnly": false
      },
      "Filename": {
        "type": [
          "string",
          "null"
        ],
        "readOnly": false,
        "description": "The name of the file or directory."
      },
      "FileSize": {
        "type": [
          "number",
          "null"
        ],
        "readOnly": false,
        "description": "The size of the file."
      },
      "LastModified": {
        "type": [
          "string",
          "null"
        ],
        "readOnly": false
      },
      "IsDirectory": {
        "type": [
          "boolean",
          "null"
        ],
        "readOnly": false
      },
      "Permissions": {
        "type": [
          "string",
          "null"
        ],
        "readOnly": false
      },
      "Owner": {
        "type": [
          "string",
          "null"
        ],
        "readOnly": false
      },
      "OwnerId": {
        "type": [
          "string",
          "null"
        ],
        "readOnly": false
      },
      "Group": {
        "type": [
          "string",
          "null"
        ],
        "readOnly": false
      },
      "GroupId": {
        "type": [
          "string",
          "null"
        ],
        "readOnly": false
      }
    }
  }

Configuração dinâmica do filterClause

Para as operações List, Update e Delete, é possível definir o valor da variável de entrada filterClasue dinamicamente no momento da execução usando a tarefa Mapeamento de dados na sua integração. Por exemplo, é possível enviar o valor da cláusula de filtro ao invocar o acionador de API na sua integração. A imagem a seguir mostra um exemplo de mapeamento para a variável filterClause no editor de mapeamento de dados da tarefa de mapeamento de dados: Definir cláusula de filtro no editor de mapeamento de dados

Usar o Terraform para criar conexões

É possível usar o Terraform recurso para criar uma nova conexão.

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Para conferir um exemplo de modelo do Terraform para criação de conexão, consulte Exemplo de modelo.

Ao criar essa conexão usando o Terraform, você precisa definir as seguintes variáveis no arquivo de configuração do Terraform:

Nome do parâmetro Tipo de dados Obrigatório Descrição
file_retrieval_depth STRING Falso Especifique o nível de profundidade das pastas que você quer consultar na tabela raiz.
passiva BOOLEAN Falso Controla se o servidor será direcionado para o modo passivo. Recomendado quando protegido por um firewall.
remote_path STRING Falso O caminho atual no servidor FTP.
table_depth INTEGER Falso O nível de profundidade para exibir subpastas como visualizações.
use_mlsd BOOLEAN Falso Usa listagens para processamento de máquina. Usado apenas para servidores FTP.

Usar a conexão FTP em uma integração

Depois que você cria a conexão, ela fica disponível nos Apigee Integration e Application Integration. É possível usar a conexão em uma integração pela tarefa de conectores.

  • Para entender como criar e usar a tarefa Conectores na integração da Apigee, consulte a Tarefa Conectores.
  • Para entender como criar e usar a tarefa Conectores no Application Integration, consulte Tarefa Conectores.

Receber ajuda da comunidade do Google Cloud

Poste suas dúvidas e converse sobre esse conector na comunidade do Google Cloud em Fóruns do Cloud.

A seguir