Accesso FTP / SFTP a un bucket Amazon S3 [chiuso]


146

Esiste un modo per connettersi a un bucket Amazon S3 con FTP o SFTP anziché all'interfaccia di trasferimento file Amazon integrata nella console AWS? Sembra strano che questa non sia un'opzione facilmente disponibile.


2
AWS rilasciato a novembre 2018 Servizio SFTP completamente gestito che consente il trasferimento di file direttamente dentro e fuori Amazon S3. Trasferimento AWS per SFTP
mitaka,

Risposte:


100

Vi sono tre opzioni.

  • Puoi utilizzare un servizio SFTP gestito nativo recentemente aggiunto da Amazon (che è più facile da configurare).
  • Oppure puoi montare il bucket su un file system su un server Linux e accedere ai file utilizzando SFTP come qualsiasi altro file sul server (che ti dà un maggiore controllo).
  • Oppure puoi semplicemente usare un client (GUI) che supporta nativamente il protocollo S3 (cosa è gratuito).

Servizio SFTP gestito

  • Nella tua console Amazon AWS, vai su AWS Transfer per SFTP e crea un nuovo server.

  • Nella pagina del server SFTP, aggiungi un nuovo utente (o utenti) SFTP.

    • Le autorizzazioni degli utenti sono regolate da un ruolo AWS associato nel servizio IAM (per un avvio rapido, è possibile utilizzare la politica AmazonS3FullAccess ).

    • Il ruolo deve avere una relazione di fiducia con transfer.amazonaws.com.

Per i dettagli, consultare la mia guida Impostazione di un accesso SFTP ad Amazon S3 .


Montaggio benna su server Linux

Basta montare il bucket utilizzando il s3fsfile system (o simile) su un server Linux (ad esempio Amazon EC2) e utilizzare il server SFTP incorporato del server per accedere al bucket.

  • Installa il s3fs
  • Aggiungi le tue credenziali di sicurezza in un modulo access-key-id:secret-access-keya/etc/passwd-s3fs
  • Aggiungi una voce di montaggio benna a fstab:

    <bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
    

Per i dettagli, consultare la mia guida Impostazione di un accesso SFTP ad Amazon S3 .


Usa client S3

Oppure utilizza qualsiasi "client FTP / SFTP" gratuito , che sia anche un "client S3" e non hai impostato nulla sul lato server. Ad esempio, il mio WinSCP o Cyberduck .

WinSCP ha persino script e interfaccia .NET / PowerShell , se è necessario automatizzare i trasferimenti.


2
Il fatto che il bucket sia montato come in rootseguito crea permission deniedproblemi di trasferimento quando ci si connette ec2-usertramite SFTP. /mnt/<bucket>la cartella è di proprietà roote ha anche il gruppo root.
elvismdev,

1
@elvismdev / others - Installa come utente ftp (usando le opzioni uid / gid) e assicurati che sia montato con allow_other(o -o allow_otherse il montaggio dalla riga di comando s3fs) .. funziona per me. È anche una buona idea scrivere i file come permessi di sola lettura (-o default_acl = public-read) nel mio caso (su un bucket privato).
bshea,

66

Aggiornare

S3 ora offre un servizio gateway SFTP completamente gestito per S3 che si integra con IAM e può essere amministrato usando aws-cli.


Ci sono ragioni teoriche e pratiche per cui questa non è una soluzione perfetta, ma funziona ...

È possibile installare un servizio FTP / SFTP (come proftpd) su un server Linux, in EC2 o nel proprio data center ... quindi montare un bucket nel filesystem in cui il server ftp è configurato per chroot, usando s3fs .

Ho un client che serve contenuto da S3 e il contenuto è fornito da una terza parte che supporta solo push ftp ... quindi, con qualche esitazione (a causa della mancata corrispondenza dell'impedenza tra S3 e un vero filesystem) ma mancante il tempo di scrivere un pacchetto software server gateway FTP / S3 adeguato (che intendo ancora fare uno di questi giorni), ho proposto e distribuito questa soluzione per loro diversi mesi fa e non hanno segnalato alcun problema con il sistema.

Come bonus, dal momento che proftpd può chroot ogni utente nella propria directory home e "fingere" (per quanto l'utente può dire) che i file di proprietà dell'utente proftpd sono effettivamente di proprietà dell'utente che ha effettuato l'accesso, questo segrega ogni utente ftp in una "sottodirectory" del bucket e rende inaccessibili i file degli altri utenti.


Si è verificato un problema con la configurazione predefinita.

Una volta che inizi a ottenere alcune decine o centinaia di file, il problema si manifesterà quando si estrae un elenco di directory, poiché ProFTPd tenterà di leggere i .ftpaccessfile più e più volte e ancora e per ogni file nella directory, .ftpaccessviene controllato per vedere se l'utente dovrebbe essere autorizzato a visualizzarlo.

È possibile disabilitare questo comportamento in ProFTPd, ma suggerirei che la configurazione più corretta è quella di configurare opzioni aggiuntive -o enable_noobj_cache -o stat_cache_expire=30in s3fs:

-o stat_cache_expire (il valore predefinito non scade)

specifica il tempo di scadenza (secondi) per le voci nella cache delle statistiche

Senza questa opzione, effettuerai meno richieste a S3, ma non scoprirai sempre in modo affidabile le modifiche apportate agli oggetti se processi esterni o altre istanze di s3fs stanno modificando anche gli oggetti nel bucket. Il valore "30" nel mio sistema è stato selezionato in qualche modo arbitrariamente.

-o enable_noobj_cache (il valore predefinito è disabilitato)

abilitare le voci della cache per l'oggetto che non esiste. s3fs deve sempre verificare se il file (o la sottodirectory) esiste sotto l'oggetto (percorso) quando s3fs esegue alcuni comandi, poiché s3fs ha riconosciuto una directory che non esiste e ha sottodirectory file o sotto. Aumenta la richiesta di ListBucket e peggiora le prestazioni. È possibile specificare questa opzione per le prestazioni, s3fs memorizza nella cache delle statistiche che l'oggetto (file o directory) non esiste.

Questa opzione consente a s3fs di ricordare che .ftpaccessnon c'era.


Non correlato ai problemi di prestazioni che possono sorgere con ProFTPd, che sono stati risolti dalle modifiche precedenti, è necessario abilitare anche -o enable_content_md5in s3fs.

-o enable_content_md5 (il valore predefinito è disabilitato)

verifica dei dati caricati senza multipart dall'intestazione content-md5. Abilita l'invio dell'intestazione "Content-MD5" durante il caricamento di un oggetto senza registrazione multipart. Se questa opzione è abilitata, ha alcune influenze sulle prestazioni di s3fs durante il caricamento di piccoli oggetti. Poiché s3fs controlla sempre MD5 durante il caricamento di oggetti di grandi dimensioni, questa opzione non ha effetto su oggetti di grandi dimensioni.

Questa è un'opzione che non avrebbe mai dovuto essere un'opzione: dovrebbe essere sempre abilitata, perché non farlo ignora un controllo critico di integrità per solo un vantaggio trascurabile in termini di prestazioni. Quando un oggetto viene caricato su S3 con Content-MD5:un'intestazione, S3 convalida il checksum e rifiuta l'oggetto se è corrotto durante il trasporto. Per quanto improbabile possa essere, sembra miope disabilitare questo controllo di sicurezza.

Le citazioni sono dalla pagina man di s3fs. Gli errori grammaticali si trovano nel testo originale.


4
potresti approfondire i motivi per cui questa soluzione non è l'ideale?
fernio,

2
@MarcoMarsala le correzioni per le grandi directory sono state aggiunte alla risposta.
Michael - sqlbot,

1
@ Michael-sqlbot hai provato a usare la direttiva "AllowOverride off" nella configurazione di ProFTPd per impedire che tenti di leggere completamente i file ".ftpaccess"?
Greg Dubicki,

1
Ho provato di tutto e posso solo impostare utente: gruppo / permessi a livello di cartella in cui è montato il bucket S3. Quindi tali autorizzazioni si propagano fino a tutte le cartelle su S3. Ho provato molte cose, tra cui molte varianti di questo comando S3FS 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: non posso cambiare alcuna autorizzazione sulle cartelle nella cartella Mounted S3 una volta creata.
T. Brian Jones,

1
@Sverre Uso ancora questa soluzione in produzione. Non mi dà alcun problema.
Michael - sqlbot,

24

Risposta del 2014 per le persone che mi stanno votando male:

Bene, S3 non è FTP. Ci sono molti client che supportano S3, tuttavia.

Praticamente ogni notevole client FTP su OS X ha il supporto, inclusi Transmit e Cyberduck .

Se sei su Windows, dai un'occhiata a Cyberduck o CloudBerry .

Risposta aggiornata per il 2019:

AWS ha recentemente rilasciato il servizio AWS Transfer for SFTP , che potrebbe fare quello che stai cercando.


2
Cyberduck funziona in modo fantastico se sei un principiante del server come me. Ho appena fatto clic su Apri connessione, selezionato S3 dal menu a discesa e immetti le mie credenziali. Molto più semplice di alcune delle opzioni sopra menzionate!
Marquizzo,

7

Oppure gira l'istanza Linux per SFTP Gateway nella tua infrastruttura AWS che salva i file caricati sul tuo bucket Amazon S3.

Supportato da Thorntech


2
Usiamo il gateway SFTP in produzione per grandi progetti da diversi anni. Abbiamo trovato che è più affidabile di s3fs
Jeff

3

Filezilla ha appena rilasciato una versione Pro del suo client FTP. Si collega ai bucket S3 in un'esperienza FTP semplificata. Lo uso da solo (nessuna affiliazione) e funziona benissimo.


3

WinSCp ora supporta il protocollo S3

Innanzitutto, assicurati che l'utente AWS con autorizzazioni di accesso S3 abbia creato un "ID chiave di accesso". Devi anche conoscere la "chiave di accesso segreta". Le chiavi di accesso vengono create e gestite nella pagina Utenti della console di gestione IAM.

Assicurarsi che il nodo Nuovo sito sia selezionato.

Nel nodo Nuovo sito, seleziona il protocollo Amazon S3.

Inserisci il tuo ID AWS ID chiave di accesso e chiave di accesso segreta

Salva le impostazioni del tuo sito utilizzando il pulsante Salva.

Accedi usando il pulsante Accedi.


2

Amazon ha rilasciato servizi SFTP per S3, ma lo fanno solo SFTP (non FTP o FTPES) e possono essere proibitivi in ​​base alle circostanze.

Sono il fondatore di DocEvent.io e forniamo gateway FTP / S per il tuo bucket S3 senza dover girare i server o preoccuparti dell'infrastruttura.

Esistono anche altre società che forniscono un server FTP autonomo che si paga entro il mese in grado di connettersi a un bucket S3 tramite la configurazione del software, ad esempio brickftp.com .

Infine ci sono anche alcune app di AWS Marketplace che possono aiutarti, ecco un link di ricerca . Molte di queste istanze di spin-up nella propria infrastruttura - questo significa che dovrai gestire e aggiornare tu stesso le istanze che possono essere difficili da mantenere e configurare nel tempo.


DocEvents sembra buono ma ha troppe restrizioni sul piano gratuito ... Non potrei nemmeno provare il servizio ...
D.Dimitrioglo

1

Come hanno sottolineato altri poster, ci sono alcune limitazioni con il servizio AWS Transfer for SFTP. È necessario allineare attentamente i requisiti. Ad esempio, non ci sono quote, liste bianche / liste nere, limiti del tipo di file e l'accesso non basato su chiavi richiede servizi esterni. C'è anche un certo overhead relativo alla gestione degli utenti e IAM, che può diventare un problema su vasta scala.

Gestiamo un gateway proxy S3 SFTP da circa 5 anni per i nostri clienti. La soluzione di base è racchiusa in una raccolta di servizi Docker e distribuita in qualsiasi contesto sia necessario, anche in server di sviluppo locali o locali. Il caso d'uso per noi è leggermente diverso in quanto la nostra soluzione è focalizzata sull'elaborazione dei dati e sulle pipeline rispetto a una condivisione di file. In un esempio di Salesforce, un cliente utilizzerà SFTP come metodo di trasporto per inviare e-mail, acquistare ... dati a un enpoint SFTP / S3. Viene mappata una chiave oggetto su S3. All'arrivo, i dati vengono raccolti, elaborati, instradati e caricati in un magazzino. Abbiamo anche requisiti di controllo abbastanza significativi per ogni trasferimento, cosa che i registri di Cloudwatch per AWS non forniscono direttamente.

Come altri hanno già detto, anche il rotolamento è un'opzione. Usando AWS Lightsail puoi configurare un cluster, diciamo 4, di $ 10 istanze da 2 GB usando Route 53 o un ELB.

In generale, è bello vedere AWS offrire questo servizio e mi aspetto che maturi nel tempo. Tuttavia, a seconda del caso d'uso, soluzioni alternative potrebbero adattarsi meglio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.