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.
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.
Risposte:
Vi sono tre opzioni.
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 .
Basta montare il bucket utilizzando il s3fs
file system (o simile) su un server Linux (ad esempio Amazon EC2) e utilizzare il server SFTP incorporato del server per accedere al bucket.
s3fs
access-key-id:secret-access-key
a/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 .
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.
root
seguito crea permission denied
problemi di trasferimento quando ci si connette ec2-user
tramite SFTP. /mnt/<bucket>
la cartella è di proprietà root
e ha anche il gruppo root
.
allow_other
(o -o allow_other
se 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).
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 .ftpaccess
file più e più volte e ancora e per ogni file nella directory, .ftpaccess
viene 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=30
in 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 .ftpaccess
non 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_md5
in 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.
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.
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.
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
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.
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.
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.
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.