O AWS Transfer Family é uma ferramenta da AWS que pode te ajudar a sanar muitos problemas! Entenda de forma prática como ele funciona!
14/09/2023
Por Thiago Marques
O pai ta on!!
Nesse blog existem diversos posts falando sobre serviços, soluções e possibilidades, e hoje vamos falar de um serviço da AWS, que resolve problemas muito comuns, mas que muitas vezes acaba sendo deixado de lado: o Transfer Family.
Neste artigo, vamos explorar o que é o AWS Transfer Family, seus principais recursos e opções, além de fornecer um guia passo a passo para criar um servidor SFTP (Secure File Transfer Protocol) com código Python utilizando a biblioteca boto3 e um template CloudFormation para provisionar um servidor SFTP.
O que é o AWS Transfer Family
O Transfer Family é uma solução versátil e poderosa da AWS que simplifica significativamente o processo de transferência de arquivos para a nuvem. O serviço permite que você configure facilmente servidores de transferência de arquivos além de oferecer suporte a vários protocolos de transferência, incluindo FTP (File Transfer Protocol), FTPS (FTP Secure), SFTP e até mesmo APIs personalizadas.
Essas características abrem possibilidades que vão desde um compartilhamento de arquivos seguros entre uma fonte externa e sua conta na AWS, outras aplicações para a solução podem ser:
- Backup de dados: Garantir que os dados que estão no onpremises utilizem um conector criptografado para transferência segura;
- Compartilhamento de arquivos: Compartilhar arquivos de forma segura com clientes, parceiros e fornecedores. Soluções como bucket S3, podem até resolver essa questão, mas nesse caso vai precisar de controles externos, profiles ou (no pior dos casos) deixar o bucket público (desaconselho fortemente).
- Integração com aplicativos: Como o Transfer Family vai garantir que a transferência de arquivos pontuais, ou mesmo contínuos, é possível integrá-lo com S3 e o Event Bridge para iniciar processamento de arquivos automaticamente;
Vantagens do AWS Transfer Family
- Facilidade de configuração: Ele elimina a complexidade da configuração e gestão de servidores de transferência de arquivos. Dessa forma o provisionamento e gerenciamento de servidores pode ser feito facilmente ou pela console, ou via IaC.
- Segurança: O serviço fornece recursos de segurança robustos, e possui compatibilidade com modelos de conformidade como o FedRAMP (Federal Risk and Authorization Management Program), além de incluir mecanismos de autenticação baseadas no IAM, ou mesmo customizadas com utilização de Secrets Manager e Lambda.
- Escalabilidade: Além de ser um serviço gerenciado, ele é altamente escalável, permitindo ajustes de capacidade conforme a necessidade da solução evolui.
- Observabilidade: Com sua integração com o CloudWatch, criar métricas, alarmes e até o traceback dos logs com o cloudwatch logs é além de simples, totalmente eficaz e eficiente para coletas daqueles registros detalhados solicitados em auditorias.
- Múltiplas formas de saída (outputs): Se pode armazenar os arquivos diretamente em um bucket no S3, proporcionando durabilidade e escalabilidade, além de integração com outros serviços da AWS, ou ainda garantir uma maior facilidade na aplicação com a utilização do EFS como outputs.
Adicionalmente é possível utilizar scripts no Lambda para enviar/processar esses arquivos diretamente.
Pontos de atenção com o Transfer Family
Mesmo com diversas vantagens existem alguns pontos de atenção a serem observados.
O serviço não tem por padrão uma forma simples para utilização de clientes.
Dessa forma é necessário a utilização de clientes que suporte SFTP/FTP para a transferência de dados, ou mesmo de uma aplicação que faça essa função, o que deixa o trabalho um pouco árduo para usuários que não possuem familiaridade com os clientes.
Bônus: Solution Web Client
Como disse, por padrão não existe uma forma simples de utilização do serviço, contudo a AWS desenvolveu uma solução de web cliente, garantindo vantagens como simplicidade, suporte a multi-client e gerenciamento dos arquivos (upload, download, rename e delete).
A solução esta disponível em: Web Client for AWS Transfer Family, e basicamente um cloudFormation que faz deploy da estrutura abaixo:
Ao final teremos uma página web (CRUD) com autenticação, gerenciamento e interação muito mais útil e eficiente.
Comparação de preços
Por ser um serviço gerenciado em comparação direta com as mesmas funcionalidades em um IaaS o Transfer Family acaba ficando com um preço mais elevado. Obviamente todo o custo em operação, administração e infraestrutura deve ser colocado na balança.
Conduto, considerando uma m6i.2xlarge com 200G de TransferOut/mês, o Transfer Family teria uma vantagem financeira:
Obs.: Aqui não consideramos savings plans, nem reserva.
Infra como Código
Como sempre vamos ver um exemplo de código para criar o deploy em python:
import boto3
# Cria o
objeto de cliente do serviço
transfer_client = boto3.client(‘transfer’)
#
Parametros
server_params
= {
‘IdentityProviderType’:
‘SERVICE_MANAGED’,
‘Protocols’: [‘SFTP’],
‘EndpointType’:’PUBLIC’,
‘Domain’:’S3′,
‘Tags’:'[{‘Key’: ‘Name’, ‘Value’: ‘SFTP by
Python’}]’
}
# Crie o servidor SFTP
response =
transfer_client.create_server(**server_params)
# Imprima o ID do servidor recém-criado
print(‘ID do Servidor SFTP:’, response[‘ServerId’])
Conclusão
O Transfer Family é uma ferramenta valiosa, que simplifica a transferência de arquivos para AWS, gerando facilidade na configuração, a segurança com diversos frameworks de compliantes, e toda a integração que a AWS possui entre seus serviços.
Xero no suvaco!!
Be Happy!!!
thiago.marques@darede.com.br
Technical Account Manager da Darede, formato em Rede de Computadores, e pós graduado em Segurança da Informação. Possui ampla experiência em Datacenters e Service Providers, além de ser um entusiasta em DevOps e mercado financeiro.