Existe uma maneira de conectar-se a um bucket do Amazon S3 com FTP ou SFTP, em vez da interface integrada de transferência de arquivos da Amazon no console da AWS? Parece estranho que essa não seja uma opção prontamente disponível.
Existe uma maneira de conectar-se a um bucket do Amazon S3 com FTP ou SFTP, em vez da interface integrada de transferência de arquivos da Amazon no console da AWS? Parece estranho que essa não seja uma opção prontamente disponível.
Respostas:
Existem três opções.
No seu Amazon AWS Console, acesse AWS Transfer for SFTP e crie um novo servidor.
Na página do servidor SFTP, adicione um novo usuário (ou usuários) SFTP.
As permissões dos usuários são governadas por uma função associada da AWS no serviço IAM (para um início rápido, você pode usar a política AmazonS3FullAccess ).
A função deve ter uma relação de confiança transfer.amazonaws.com
.
Para obter detalhes, consulte o meu guia Configurando um acesso SFTP ao Amazon S3 .
Basta montar o bucket usando s3fs
o sistema de arquivos (ou similar) em um servidor Linux (por exemplo, Amazon EC2) e usar o servidor SFTP interno do servidor para acessar o bucket.
s3fs
access-key-id:secret-access-key
para/etc/passwd-s3fs
Adicione uma entrada de montagem de balde a fstab
:
<bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
Para obter detalhes, consulte o meu guia Configurando um acesso SFTP ao Amazon S3 .
Ou use qualquer "cliente FTP / SFTP" gratuito , que também seja um "cliente S3" , e você não configurou nada no lado do servidor. Por exemplo, meu WinSCP ou Cyberduck .
O WinSCP possui até scripts e interface .NET / PowerShell , se você precisar automatizar as transferências.
root
transferência posteriores permission denied
ao conectar ec2-user
via SFTP. /mnt/<bucket>
A pasta pertence root
e também tem o grupo root
.
allow_other
(ou -o allow_other
se estiver montando a partir da linha de comando s3fs) .. funciona para mim. Também é uma boa ideia gravar os arquivos como permissões somente leitura (-o default_acl = public-read) no meu caso (em um bucket privado).
Atualizar
O S3 agora oferece um serviço de gateway SFTP totalmente gerenciado para o S3, que se integra ao IAM e pode ser administrado usando o aws-cli.
Existem razões teóricas e práticas para essa não ser uma solução perfeita, mas funciona ...
Você pode instalar um serviço FTP / SFTP (como proftpd) em um servidor linux, no EC2 ou em seu próprio data center ... e montar um bucket no sistema de arquivos em que o servidor ftp está configurado para chroot, usando s3fs .
Eu tenho um cliente que serve conteúdo fora do S3, e o conteúdo é fornecido a eles por terceiros que apenas suportam pushs FTP ... então, com alguma hesitação (devido à incompatibilidade de impedância entre o S3 e um sistema de arquivos real), mas faltando Na hora de escrever um pacote de software de servidor de gateway FTP / S3 adequado (que ainda pretendo fazer um dia desses), propus e implantei essa solução para eles há vários meses e eles não relataram nenhum problema com o sistema.
Como um bônus, como o proftpd pode fazer o chroot de cada usuário em seu próprio diretório inicial e "fingir" (até onde o usuário sabe) que os arquivos pertencentes ao usuário proftpd são realmente de propriedade do usuário logado, isso separa cada usuário ftp em um "subdiretório" do bucket e torna os arquivos dos outros usuários inacessíveis.
Há um problema com a configuração padrão, no entanto.
Depois que você começar a obter algumas dezenas ou centenas de arquivos, o problema se manifestará quando você abrir uma lista de diretórios, porque o ProFTPd tentará ler os .ftpaccess
arquivos repetidamente e novamente e para cada arquivo no diretório, .ftpaccess
está marcado para ver se o usuário deve poder vê-lo.
Você pode desativar esse comportamento no ProFTPd, mas eu sugiro que a configuração mais correta seja configurar opções adicionais -o enable_noobj_cache -o stat_cache_expire=30
no s3fs:
-o stat_cache_expire
(o padrão é não expirar)especifique o tempo de expiração (segundos) para entradas no cache de estatísticas
Sem essa opção, você fará menos solicitações ao S3, mas nem sempre descobrirá com segurança as alterações feitas nos objetos se processos externos ou outras instâncias do s3fs também estiverem modificando os objetos no bucket. O valor "30" no meu sistema foi selecionado de forma arbitrária.
-o enable_noobj_cache
(o padrão é desativar)habilitar entradas de cache para o objeto que não existe. O s3fs sempre precisa verificar se o arquivo (ou subdiretório) existe no objeto (caminho) quando o s3fs executa algum comando, pois o s3fs reconheceu um diretório que não existe e possui arquivos ou subdiretórios. Aumenta a solicitação ListBucket e prejudica o desempenho. Você pode especificar esta opção para desempenho, o s3fs memoriza no cache de estatísticas que o objeto (arquivo ou diretório) não existe.
Esta opção permite que o s3fs se lembre de que .ftpaccess
não estava lá.
Independentemente dos problemas de desempenho que podem surgir com o ProFTPd, resolvidos pelas alterações acima, você também precisa habilitar -o enable_content_md5
no s3fs.
-o enable_content_md5
(o padrão é desativar)verificação de dados enviados sem multipartes pelo cabeçalho content-md5. Ative o envio do cabeçalho "Content-MD5" ao fazer upload de um objeto sem postagem de várias partes. Se essa opção estiver ativada, ela terá alguma influência no desempenho do s3fs ao fazer upload de objetos pequenos. Como o s3fs sempre verifica o MD5 ao fazer upload de objetos grandes, essa opção não afeta o objeto grande.
Essa é uma opção que nunca deveria ter sido uma opção - deve sempre estar ativada, porque não fazer isso ignora uma verificação crítica de integridade, apenas para um benefício insignificante de desempenho. Quando um objeto é carregado no S3 com um Content-MD5:
cabeçalho, o S3 validará a soma de verificação e rejeitará o objeto se ele estiver corrompido em trânsito. Por mais improvável que seja, parece míope desativar essa verificação de segurança.
As cotações são da página de manual do s3fs. Erros gramaticais estão no texto original.
sudo s3fs bucket-name /local-mount-folder-name/ -o iam_role=sftp-server -o allow_other -o umask=022 -o uid=501 -o gid=501
- não posso alterar nenhuma permissão nas pastas na pasta Mounted S3, uma vez criado.
Resposta de 2014 para as pessoas que estão com voto negativo:
Bem, o S3 não é FTP. Existem muitos clientes que suportam o S3, no entanto.
Praticamente todos os notáveis clientes de FTP no OS X têm suporte, incluindo Transmit e Cyberduck .
Se você estiver no Windows, dê uma olhada no Cyberduck ou CloudBerry .
Resposta atualizada para 2019:
A AWS lançou recentemente o serviço AWS Transfer for SFTP , que pode fazer o que você está procurando.
Ou gire a instância do Linux para o SFTP Gateway em sua infraestrutura da AWS que salva os arquivos carregados no seu bucket do Amazon S3.
Apoiado por Thorntech
O Filezilla acaba de lançar uma versão Pro do seu cliente FTP. Ele se conecta aos buckets S3 em uma experiência otimizada de FTP. Eu mesmo uso (sem nenhuma afiliação) e funciona muito bem.
WinSCp agora suporta protocolo S3
Primeiro, verifique se o usuário da AWS com permissões de acesso S3 possui um "ID da chave de acesso" criado. Você também precisa conhecer a "Chave de acesso secreta". As chaves de acesso são criadas e gerenciadas na página Usuários do IAM Management Console.
Verifique se Novo nó do site está selecionado.
No nó Novo site, selecione protocolo Amazon S3.
Digite o ID da chave de acesso do usuário da AWS e a chave de acesso secreta
Salve as configurações do site usando o botão Salvar.
Faça o login usando o botão Login.
A Amazon lançou serviços SFTP para S3, mas eles apenas fazem SFTP (não FTP ou FTPES) e podem ser proibitivos em termos de custos, dependendo das circunstâncias.
Sou o fundador do DocEvent.io e fornecemos gateways FTP / S para o seu bucket S3 sem precisar ativar servidores ou se preocupar com a infraestrutura.
Também existem outras empresas que fornecem um servidor FTP independente que você paga por mês que pode se conectar a um bucket S3 por meio da configuração do software, por exemplo, brickftp.com .
Por fim, também existem alguns aplicativos do AWS Marketplace que podem ajudar. Aqui está um link de pesquisa . Muitas dessas instâncias de spin-up em sua própria infraestrutura - isso significa que você precisará gerenciar e atualizar as instâncias, o que pode ser difícil de manter e configurar ao longo do tempo.
Como outros pôsteres apontaram, existem algumas limitações no serviço AWS Transfer for SFTP. Você precisa alinhar estreitamente os requisitos. Por exemplo, não há cotas, listas de permissões / listas negras, limites de tipo de arquivo e acesso não baseado em chave requerem serviços externos. Há também uma certa sobrecarga relacionada ao gerenciamento de usuários e ao IAM, que pode ser um grande problema.
Estamos executando um Gateway Proxy SFTP S3 há cerca de 5 anos para nossos clientes. A solução principal é agrupada em uma coleção de serviços do Docker e implantada em qualquer contexto necessário, mesmo em servidores de desenvolvimento locais ou locais. O caso de uso para nós é um pouco diferente, pois nossa solução é o processamento de dados e os pipelines versus o compartilhamento de arquivos. Em um exemplo do Salesforce, um cliente usará o SFTP como o método de transporte para enviar email, comprar ... dados para um ponto SFTP / S3. É mapeada uma chave de objeto no S3. Na chegada, os dados são coletados, processados, roteados e carregados em um armazém. Também temos requisitos de auditoria bastante significativos para cada transferência, algo que os logs do Cloudwatch para a AWS não fornecem diretamente.
Como outros já mencionaram, rodar o seu próprio também é uma opção. Usando o AWS Lightsail, você pode configurar um cluster, digamos 4, de instâncias de US $ 10 de 2 GB usando o Route 53 ou um ELB.
Em geral, é ótimo ver a AWS oferecer esse serviço e espero que ele amadureça com o tempo. No entanto, dependendo do seu caso de uso, soluções alternativas podem ser mais adequadas.