web-dev-qa-db-fra.com

Accès FTP / SFTP à un compartiment Amazon S3

Existe-t-il un moyen de se connecter à un compartiment Amazon S3 via FTP ou SFTP plutôt qu'à l'interface de transfert de fichiers Amazon intégrée dans la console AWS? Cela semble étrange que cette option ne soit pas facilement disponible.

131
zgall1

Il y a trois options.

  • Vous pouvez utiliser un service SFTP géré natif ajouté récemment par Amazon (qui est plus facile à configurer).
  • Ou vous pouvez monter le compartiment sur un système de fichiers sur un serveur Linux et accéder aux fichiers en utilisant SFTP comme n'importe quel autre fichier sur le serveur (ce qui vous donne un meilleur contrôle).
  • Ou vous pouvez simplement utiliser un client (GUI) prenant en charge de manière native le protocole S3 (ce qui est gratuit).

Service SFTP géré

  • Dans votre console Amazon AWS, accédez à AWS Transfer for SFTP et créez un nouveau serveur.

  • Dans la page du serveur SFTP, ajoutez un nouvel utilisateur (ou utilisateurs) SFTP.

    • Les autorisations des utilisateurs sont régies par un rôle AWS associé dans le service IAM (pour un démarrage rapide, vous pouvez utiliser AmazonS3FullAccess stratégie).

    • Le rôle doit avoir une relation de confiance avec transfer.amazonaws.com.

Pour plus de détails, consultez mon guide Configuration d'un accès SFTP à Amazon S .


Montage du godet sur un serveur Linux

Montez simplement le compartiment à l'aide du système de fichiers s3fs (ou similaire) sur un serveur Linux (par exemple, Amazon EC2) et utilisez le serveur SFTP intégré du serveur pour accéder au compartiment.

  • Installer le s3fs
  • Ajoutez vos identifiants de sécurité sous la forme access-key-id:secret-access-key à /etc/passwd-s3fs
  • Ajoutez une entrée de montage de compartiment à fstab:

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

Pour plus de détails, consultez mon guide Configuration d'un accès SFTP à Amazon S .


Utiliser le client S3

Ou utilisez un "client FTP/SFTP" gratuit , c’est aussi un "client S3" , et vous n'avez rien configuré du côté serveur. Par exemple, my WinSCP ou Cyberduck .

WinSCP a même script et . NET / interface PowerShell , si vous devez automatiser les transferts.

80
Martin Prikryl

Mettre à jour

S3 propose désormais un service de passerelle SFTP entièrement géré pour S qui s'intègre à IAM et peut être administré à l'aide de aws-cli.


Il y a des raisons théoriques et pratiques pour lesquelles cette solution n'est pas parfaite, mais cela fonctionne ...

Vous pouvez installer un service FTP/SFTP (tel que proftpd) sur un serveur Linux, soit dans EC2, soit dans votre propre centre de données ... puis montez un seau dans le système de fichiers où le serveur FTP est configuré pour chroot, à l'aide de s3fs .

J'ai un client qui sert du contenu sur S3 et le contenu lui est fourni par une tierce partie qui ne supporte que les push ftp ... donc, avec quelques hésitations (en raison de l'inadéquation de l'impédance entre S3 et un système de fichiers réel) mais manquant le temps d’écrire un bon progiciel de serveur de passerelle FTP/S3 (que j’ai encore l’intention de faire un de ces jours), j’ai proposé et déployé cette solution pour eux il ya plusieurs mois et ils n’ont signalé aucun problème avec le système.

En prime, puisque proftpd peut chrooter chaque utilisateur dans son propre répertoire personnel et "prétendre" (autant que l'utilisateur le sache) que les fichiers appartenant à l'utilisateur proftpd sont réellement la propriété de l'utilisateur connecté, cela sépare chaque utilisateur ftp en un "sous-répertoire" du compartiment, et rend les fichiers des autres utilisateurs inaccessibles.


Il y a cependant un problème avec la configuration par défaut.

Une fois que vous commencez à obtenir quelques dizaines ou centaines de fichiers, le problème se manifeste lorsque vous extrayez une liste de répertoires, car ProFTPd essaiera de lire les fichiers .ftpaccess encore et encore, et pour chaque fois. fichier dans le répertoire, .ftpaccess est vérifié pour voir si l'utilisateur doit être autorisé à l'afficher.

Vous pouvez désactiver ce comportement dans ProFTPd, mais je suggérerais que la configuration la plus correcte consiste à configurer des options supplémentaires -o enable_noobj_cache -o stat_cache_expire=30 dans s3fs:

-o stat_cache_expire (la valeur par défaut est no expire)

spécifie le délai d'expiration (secondes) pour les entrées dans le cache de statistiques

Sans cette option, vous ferez moins de demandes à S3, mais vous ne découvrirez pas toujours de manière fiable les modifications apportées aux objets si des processus externes ou d'autres instances de s3fs modifient également les objets du compartiment. La valeur "30" dans mon système a été sélectionnée de manière quelque peu arbitraire.

-o enable_noobj_cache (le réglage par défaut est désactivé)

active les entrées de cache pour l'objet qui n'existe pas. s3fs doit toujours vérifier si le fichier (ou le sous-répertoire) existe sous object (chemin) lorsque s3fs exécute une commande, car s3fs a reconnu un répertoire qui n'existe pas et contient des fichiers ou des sous-répertoires. Cela augmente la demande ListBucket et nuit aux performances. Vous pouvez spécifier cette option pour améliorer les performances. S3fs mémorise dans le cache de stat que l’objet (fichier ou répertoire) n’existe pas.

Cette option permet à s3fs de se rappeler que .ftpaccess n'était pas là.


Indépendamment des problèmes de performances pouvant survenir avec ProFTPd, qui sont résolus par les modifications ci-dessus, vous devez également activer -o enable_content_md5 dans s3fs.

-o enable_content_md5 (le réglage par défaut est désactivé)

vérifiant les données téléchargées sans multipart par en-tête content-md5. Activer l'envoi de l'en-tête "Content-MD5" lors du téléchargement d'un objet sans comptabilisation en plusieurs parties. Si cette option est activée, cela a une influence sur les performances de s3fs lors du téléchargement d'un petit objet. Comme s3fs vérifie toujours MD5 lors du téléchargement d’un objet volumineux, cette option n’a aucune incidence sur les objets volumineux.

C'est une option qui n'aurait jamais dû l'être: elle devrait toujours être activée, car elle ne contourne pas une vérification d'intégrité critique pour un avantage de performance négligeable. Lorsqu'un objet est chargé sur S3 avec un en-tête Content-MD5:, S3 valide la somme de contrôle et rejette l'objet s'il est corrompu en transit. Aussi improbable que cela puisse paraître, il semble myope de désactiver ce contrôle de sécurité.

Les citations proviennent de la page de manuel de s3fs. Les erreurs grammaticales sont dans le texte original.

63
Michael - sqlbot

Réponse à partir de 2014 pour les personnes qui votent contre moi:

Eh bien, S3 n'est pas FTP. Cependant, de nombreux clients prennent en charge S3.

Presque tous les clients FTP notables sur OS X ont un support, notamment Transmit et Cyberduck .

Si vous utilisez Windows, regardez Cyberduck ou CloudBerry .

Réponse mise à jour pour 2019:

AWS a récemment publié le service AWS Transfer for SFTP , qui peut faire ce que vous recherchez.

21
Ryan Parman

Ou faites tourner l'instance Linux pour passerelle SFTP dans votre infrastructure AWS qui enregistre les fichiers téléchargés dans votre compartiment Amazon S3.

Soutenu par Thorntech

7
mitaka

Filezilla vient de publier un version Pro de son client FTP. Il se connecte aux compartiments S3 dans un environnement FTP simplifié. Je l'utilise moi-même (aucune affiliation) et cela fonctionne très bien.

3
petezurich

WinSCp supporte maintenant le protocole S

Tout d'abord, assurez-vous qu'un "ID de clé d'accès" a été créé pour votre utilisateur AWS disposant d'autorisations d'accès S3. Vous devez également connaître la "clé d'accès secrète". Les clés d'accès sont créées et gérées sur la page Utilisateurs de la console de gestion IAM.

Assurez-vous que Nouveau nœud de site est sélectionné.

Sur le nœud Nouveau site, sélectionnez le protocole Amazon S3.

Entrez votre ID de clé d'accès d'utilisateur AWS et votre clé d'accès secrète.

Enregistrez les paramètres de votre site à l’aide du bouton Enregistrer.

Connectez-vous en utilisant le bouton Login.

3
Subrata Fouzdar

Comme d'autres affiches l'ont souligné, le service AWS Transfer for SFTP présente certaines limitations. Vous devez aligner étroitement les exigences. Par exemple, il n'y a pas de quotas, de listes blanches/noires, de limites de types de fichiers et l'accès sans clé nécessite des services externes. Il existe également des frais généraux liés à la gestion des utilisateurs et à l'IAM, qui peuvent devenir pénibles à grande échelle.

Nous exécutons une passerelle proxy SFTP S depuis environ 5 ans maintenant pour nos clients. La solution principale est encapsulée dans une collection de services Docker et déployée dans le contexte requis, même sur des serveurs de développement locaux ou sur site. Le cas d'utilisation pour nous est un peu différent, car notre solution est axée sur le traitement de données et les pipelines, par opposition à un partage de fichiers. Dans un exemple Salesforce, un client utilisera SFTP comme méthode de transport pour envoyer des courriels, acheter ... des données à un enpoint SFTP/S3. Ceci est mappé sur une clé d'objet sur S3. À leur arrivée, les données sont collectées, traitées, acheminées et chargées dans un entrepôt. Nous avons également des exigences d'audit assez importantes pour chaque transfert, ce que les journaux Cloudwatch pour AWS ne fournissent pas directement.

Comme d'autres l'ont mentionné, rouler soi-même est également une option. Avec AWS Lightsail, vous pouvez configurer un cluster, disons 4, d'instances de 10 Go à 2 Go utilisant Route 53 ou un ELB.

En général, il est bon de voir qu'AWS offre ce service et je pense qu'il va évoluer avec le temps. Toutefois, en fonction de votre cas d'utilisation, des solutions alternatives peuvent être un meilleur ajustement.

2
Thomas Spicer

Amazon a publié des services SFTP pour S3, mais ils ne font que SFTP (pas FTP ou FTPES) et leur coût peut être prohibitif en fonction de votre situation.

Je suis le fondateur de DocEvent.io , et nous fournissons des passerelles FTP/S pour votre compartiment S3 sans avoir à activer les serveurs ni à vous soucier de l'infrastructure.

Il existe également d'autres sociétés fournissant un serveur FTP autonome payant au mois qui peut se connecter à un compartiment S3 via la configuration logicielle, par exemple brickftp.com .

Enfin, certaines applications AWS Marketplace peuvent vous aider, voici un lien de recherche . Un grand nombre de ces instances en rotation dans votre propre infrastructure - cela signifie que vous devrez gérer et mettre à niveau les instances vous-même, ce qui peut être difficile à gérer et à configurer au fil du temps.

1
Mariusz