Existe-t-il un moyen de se connecter à un compartiment Amazon S3 avec FTP ou SFTP plutôt qu'à l'interface de transfert de fichiers Amazon intégrée dans la console AWS? Cela semble étrange que ce ne soit pas une option facilement disponible.
Existe-t-il un moyen de se connecter à un compartiment Amazon S3 avec FTP ou SFTP plutôt qu'à l'interface de transfert de fichiers Amazon intégrée dans la console AWS? Cela semble étrange que ce ne soit pas une option facilement disponible.
Réponses:
Il existe trois options.
Dans votre Amazon AWS Console, accédez à AWS Transfer for SFTP et créez un nouveau serveur.
Dans la page du serveur SFTP, ajoutez un nouvel utilisateur SFTP (ou des utilisateurs).
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 stratégie AmazonS3FullAccess ).
Le rôle doit avoir une relation de confiance avec transfer.amazonaws.com
.
Pour plus de détails, consultez mon guide Configurer un accès SFTP à Amazon S3 .
Montez simplement le seau en utilisant s3fs
le système de fichiers (ou similaire) sur un serveur Linux (par exemple Amazon EC2) et utilisez le serveur SFTP intégré au serveur pour accéder au bucket.
s3fs
access-key-id:secret-access-key
à/etc/passwd-s3fs
Ajoutez une entrée de montage de seau à fstab
:
<bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
Pour plus de détails, consultez mon guide Configurer un accès SFTP à Amazon S3 .
Ou utilisez n'importe quel "client FTP / SFTP" gratuit , c'est aussi un "client S3" , et vous n'avez rien configuré côté serveur. Par exemple, mon WinSCP ou Cyberduck .
WinSCP a même des scripts et une interface .NET / PowerShell , si vous avez besoin d'automatiser les transferts.
root
transfert ultérieurs permission denied
lors de la connexion ec2-user
via SFTP. /mnt/<bucket>
Le dossier appartient root
et contient également le groupe root
.
allow_other
(ou -o allow_other
si le montage à partir de la ligne de commande s3fs) .. fonctionne pour moi. C'est aussi une bonne idée d'écrire les fichiers en tant qu'autorisations en lecture seule (-o default_acl = public-read) dans mon cas (sur un bucket privé).
Mettre à jour
S3 propose désormais un service de passerelle SFTP entièrement géré pour S3 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 ce n'est pas une solution parfaite, mais cela fonctionne ...
Vous pouvez installer un service FTP / SFTP (tel que proftpd) sur un serveur Linux, soit dans EC2 ou dans votre propre centre de données ... puis monter un bucket dans le système de fichiers où le serveur ftp est configuré pour chroot, en utilisant s3fs .
J'ai un client qui sert du contenu en dehors de S3, et le contenu leur est fourni par un tiers qui ne prend en charge que les push ftp ... donc, avec une certaine hésitation (en raison de la discordance d'impédance entre S3 et un système de fichiers réel) mais manquant le temps d'écrire un progiciel de serveur de passerelle FTP / S3 approprié (ce que j'ai encore l'intention de faire un de ces jours), j'ai proposé et déployé cette solution pour eux il y a 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 "faire semblant" (pour autant que l'utilisateur puisse le dire) que les fichiers appartenant à l'utilisateur proftpd appartiennent réellement à l'utilisateur connecté, cela sépare chaque utilisateur ftp en un "sous-répertoire" du bucket, 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 manifestera lorsque vous tirerez une liste de répertoires, car ProFTPd tentera de lire les .ftpaccess
fichiers encore et encore, et pour chaque fichier du répertoire, .ftpaccess
est vérifié pour voir si l'utilisateur doit être autorisé à le consulter.
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 n'est pas d'expiration)spécifier l'heure d'expiration (secondes) pour les entrées dans le cache de statistiques
Sans cette option, vous ferez moins de requêtes à 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é choisie de manière quelque peu arbitraire.
-o enable_noobj_cache
(la valeur par défaut est désactivée)activer les entrées de cache pour l'objet qui n'existe pas. s3fs doit toujours vérifier si le fichier (ou sous-répertoire) existe sous l'objet (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 sous lui-même. Il augmente la demande de ListBucket et rend les performances mauvaises. Vous pouvez spécifier cette option pour les performances, s3fs mémorise dans le cache de statistiques que l'objet (fichier ou répertoire) n'existe pas.
Cette option permet à s3fs de se souvenir que ce .ftpaccess
n'était pas là.
Sans rapport avec les problèmes de performances qui peuvent 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
(la valeur par défaut est désactivée)vérification des données téléchargées sans multipart par l'en-tête content-md5. Permet d'envoyer l'en-tête "Content-MD5" lors du téléchargement d'un objet sans publication en plusieurs parties. Si cette option est activée, elle a des influences sur les performances de s3fs lors du téléchargement de petits objets. Comme s3fs vérifie toujours MD5 lors du téléchargement d'un objet volumineux, cette option n'affecte pas les objets volumineux.
C'est une option qui n'aurait jamais dû être une option - elle devrait toujours être activée, car ne pas faire cela contourne une vérification d'intégrité critique pour seulement un avantage de performance négligeable. Lorsqu'un objet est téléchargé vers S3 avec un en- Content-MD5:
tête, S3 validera la somme de contrôle et rejettera l'objet s'il est corrompu en transit. Aussi improbable que cela puisse être, il semble à courte vue de désactiver ce contrôle de sécurité.
Les citations proviennent de la page de manuel de s3fs. Les erreurs grammaticales se trouvent dans le texte 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
- Je ne peux pas modifier les autorisations sur les dossiers dans le dossier Mounted S3 une fois qu'il est créé.
Réponse de 2014 pour les personnes qui me votent contre:
Eh bien, S3 n'est pas FTP. Cependant, de nombreux clients prennent en charge S3.
Presque tous les clients FTP notables sur OS X prennent en charge, y compris Transmit et Cyberduck .
Si vous êtes sous Windows, jetez un œil à 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.
Ou faites tourner l'instance Linux pour la passerelle SFTP dans votre infrastructure AWS qui enregistre les fichiers téléchargés dans votre compartiment Amazon S3.
Soutenu par Thorntech
Filezilla vient de publier une version Pro de son client FTP. Il se connecte aux compartiments S3 dans une expérience simplifiée de type FTP. Je l'utilise moi-même (aucune affiliation du tout) et cela fonctionne très bien.
WinSCp prend désormais en charge le protocole S3
Tout d'abord, assurez-vous que votre utilisateur AWS avec des autorisations d'accès S3 a créé un «ID de clé d'accès». 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 utilisateur AWS et votre clé d'accès secrète
Enregistrez les paramètres de votre site à l'aide du bouton Enregistrer.
Connectez-vous à l'aide du bouton Connexion.
Amazon a publié des services SFTP pour S3, mais ils ne font que SFTP (pas FTP ou FTPES) et ils peuvent être prohibitifs en fonction de vos circonstances.
Je suis le fondateur de DocEvent.io et nous fournissons des passerelles FTP / S pour votre compartiment S3 sans avoir à faire tourner des serveurs ou à vous soucier de l'infrastructure.
Il existe également d'autres entreprises qui fournissent un serveur FTP autonome que vous payez au mois et qui peut se connecter à un compartiment S3 via la configuration logicielle, par exemple brickftp.com .
Enfin, il existe également des applications AWS Marketplace qui peuvent vous aider, voici un lien de recherche . Beaucoup de ces instances tournantes dans votre propre infrastructure - cela signifie que vous devrez gérer et mettre à niveau vous-même les instances, ce qui peut être difficile à maintenir et à configurer au fil du temps.
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 type de fichier et l'accès non basé sur des clés nécessite des services externes. Il existe également une certaine surcharge liée à la gestion des utilisateurs et à l'IAM, qui peut devenir pénible à grande échelle.
Nous exploitons une passerelle proxy SFTP S3 depuis environ 5 ans maintenant pour nos clients. La solution principale est enveloppée dans une collection de services Docker et déployée dans le contexte nécessaire, même sur des serveurs de développement sur site ou locaux. Le cas d'utilisation pour nous est un peu différent car notre solution est axée sur le traitement des données et les pipelines par rapport à un partage de fichiers. Dans un exemple Salesforce, un client utilisera SFTP comme méthode de transport pour envoyer des e-mails, des achats ... des données à un enpoint SFTP / S3. Il s'agit d'une clé d'objet sur S3. À l'arrivée, les données sont collectées, traitées, acheminées et chargées vers 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 le vôtre est également une option. En utilisant AWS Lightsail, vous pouvez configurer un cluster, disons 4, de 10 $ d'instances de 2 Go à l'aide de Route 53 ou d'un ELB.
En général, c'est formidable de voir AWS proposer ce service et je m'attends à ce qu'il évolue avec le temps. Cependant, selon votre cas d'utilisation, des solutions alternatives peuvent être plus adaptées.