¿Hay alguna manera de conectarse a un bucket de Amazon S3 con FTP o SFTP en lugar de la interfaz de transferencia de archivos de Amazon incorporada en la consola de AWS? Parece extraño que esta no sea una opción fácilmente disponible.
146
Respuestas:
Hay tres opciones
Servicio SFTP gestionado
En su consola Amazon AWS, vaya a AWS Transfer for SFTP y cree un nuevo servidor.
En la página del servidor SFTP, agregue un nuevo usuario (o usuarios) de SFTP.
Los permisos de los usuarios se rigen por un rol de AWS asociado en el servicio IAM (para comenzar rápidamente, puede usar la política AmazonS3FullAccess ).
El rol debe tener una relación de confianza con
transfer.amazonaws.com
.Para obtener más información, consulte mi guía Configuración de un acceso SFTP a Amazon S3 .
Montaje de cubo a servidor Linux
Simplemente monte el depósito utilizando
s3fs
el sistema de archivos (o similar) en un servidor Linux (por ejemplo, Amazon EC2) y use el servidor SFTP incorporado del servidor para acceder al depósito.s3fs
access-key-id:secret-access-key
para/etc/passwd-s3fs
Agregue una entrada de montaje del cucharón a
fstab
:Para obtener más información, consulte mi guía Configuración de un acceso SFTP a Amazon S3 .
Usar cliente S3
O utilice cualquier "cliente FTP / SFTP" gratuito , que también es un "cliente S3" , y no ha configurado nada en el lado del servidor. Por ejemplo, mi WinSCP o Cyberduck .
WinSCP tiene incluso secuencias de comandos e interfaz .NET / PowerShell , si necesita automatizar las transferencias.
fuente
root
dapermission denied
problemas de transferencia posteriores cuando se conecta aec2-user
través de SFTP./mnt/<bucket>
La carpeta es propiedadroot
y tiene el gruporoot
también.allow_other
(o-o allow_other
si lo hace desde la línea de comando s3fs) ... funciona para mí. También es una buena idea escribir los archivos como permisos de solo lectura (-o default_acl = public-read) en mi caso (en un depósito privado).Actualizar
S3 ahora ofrece un servicio de puerta de enlace SFTP totalmente administrado para S3 que se integra con IAM y se puede administrar usando aws-cli.
Hay razones teóricas y prácticas por las que esta no es una solución perfecta, pero funciona ...
Puede instalar un servicio FTP / SFTP (como proftpd) en un servidor Linux, ya sea en EC2 o en su propio centro de datos ... luego monte un depósito en el sistema de archivos donde el servidor ftp está configurado para chroot, usando s3fs .
Tengo un cliente que sirve contenido de S3, y el contenido se lo proporciona un tercero que solo admite los empujes de ftp ... por lo tanto, con algunas dudas (debido a la falta de coincidencia de impedancia entre S3 y un sistema de archivos real) pero falta Al momento de escribir un paquete de software de servidor de puerta de enlace FTP / S3 adecuado (que todavía tengo la intención de hacer uno de estos días), propuse e implementé esta solución para ellos hace varios meses y no han informado de ningún problema con el sistema.
Como beneficio adicional, dado que proftpd puede agrupar a cada usuario en su propio directorio de inicio y "simular" (hasta donde el usuario lo sepa) que los archivos propiedad del usuario proftpd son propiedad del usuario conectado, esto segrega a cada usuario ftp en un "subdirectorio" del depósito y hace que los archivos de los demás usuarios sean inaccesibles.
Sin embargo, hay un problema con la configuración predeterminada.
Una vez que comience a obtener algunas decenas o cientos de archivos, el problema se manifestará cuando extraiga una lista del directorio, porque ProFTPd intentará leer los
.ftpaccess
archivos una y otra vez, y para cada archivo en el directorio,.ftpaccess
se verifica para ver si el usuario debería poder verlo.Puede deshabilitar este comportamiento en ProFTPd, pero sugeriría que la configuración más correcta es configurar opciones adicionales
-o enable_noobj_cache -o stat_cache_expire=30
en s3fs:Sin esta opción, hará menos solicitudes a S3, pero tampoco siempre descubrirá de manera confiable los cambios realizados en los objetos si los procesos externos u otras instancias de s3fs también están modificando los objetos en el depósito. El valor "30" en mi sistema fue seleccionado de manera algo arbitraria.
Esta opción permite que s3fs recuerde que
.ftpaccess
no estaba allí.Sin relación con los problemas de rendimiento que pueden surgir con ProFTPd, que se resuelven con los cambios anteriores, también debe habilitarlo
-o enable_content_md5
en s3fs.Esta es una opción que nunca debería haber sido una opción, siempre debería estar habilitada, porque no hacer esto pasa por alto una comprobación de integridad crítica por solo un beneficio de rendimiento insignificante. Cuando un objeto se carga en S3 con un
Content-MD5:
encabezado, S3 validará la suma de verificación y rechazará el objeto si está dañado en tránsito. Por improbable que sea, parece miope deshabilitar esta verificación de seguridad.Las citas son de la página de manual de s3fs. Los errores gramaticales están en el texto original.
fuente
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
: no puedo cambiar ningún permiso en las carpetas de la carpeta S3 montada una vez que se ha creado.Respuesta de 2014 para las personas que me votan negativamente:
Bueno, S3 no es FTP. Sin embargo, hay muchos clientes que admiten S3.
Casi todos los clientes FTP notables en OS X tienen soporte, incluidos Transmit y Cyberduck .
Si está en Windows, eche un vistazo a Cyberduck o CloudBerry .
Respuesta actualizada para 2019:
AWS lanzó recientemente el servicio AWS Transfer for SFTP , que puede hacer lo que está buscando.
fuente
O haga girar la instancia de Linux para SFTP Gateway en su infraestructura de AWS que guarda los archivos cargados en su bucket de Amazon S3.
Apoyado por Thorntech
fuente
Filezilla acaba de lanzar una versión Pro de su cliente FTP. Se conecta a los cubos S3 en una experiencia simplificada como FTP. Lo uso yo mismo (sin afiliación alguna) y funciona muy bien.
fuente
WinSCp ahora es compatible con el protocolo S3
Primero, asegúrese de que su usuario de AWS con permisos de acceso S3 tenga una "ID de clave de acceso" creada. También debe conocer la "clave de acceso secreta". Las claves de acceso se crean y administran en la página Usuarios de la Consola de administración de IAM.
Asegúrese de que esté seleccionado Nuevo nodo de sitio.
En el nodo Nuevo sitio, seleccione el protocolo Amazon S3.
Ingrese su ID de clave de acceso de usuario de AWS y clave de acceso secreta
Guarde la configuración de su sitio con el botón Guardar.
Inicie sesión con el botón Iniciar sesión.
fuente
Amazon ha lanzado servicios SFTP para S3, pero solo hacen SFTP (no FTP o FTPES) y pueden tener un costo prohibitivo dependiendo de sus circunstancias.
Soy el fundador de DocEvent.io , y proporcionamos puertas FTP / S para su bucket S3 sin tener que activar servidores o preocuparse por la infraestructura.
También hay otras compañías que proporcionan un servidor FTP independiente que paga por mes que puede conectarse a un bucket S3 a través de la configuración del software, por ejemplo brickftp.com .
Por último, también hay algunas aplicaciones de AWS Marketplace que pueden ayudar, aquí hay un enlace de búsqueda . Muchas de estas instancias giratorias en su propia infraestructura, esto significa que tendrá que administrar y actualizar las instancias usted mismo, lo que puede ser difícil de mantener y configurar con el tiempo.
fuente
Como otros carteles han señalado, existen algunas limitaciones con la transferencia de AWS para el servicio SFTP. Necesita alinear estrechamente los requisitos. Por ejemplo, no hay cuotas, listas blancas / listas negras, límites de tipo de archivo y el acceso no basado en claves requiere servicios externos. También hay una cierta sobrecarga relacionada con la administración de usuarios y el IAM, que puede llegar a ser una molestia a escala.
Hemos estado ejecutando un Gateway Proxy SFTP S3 durante aproximadamente 5 años para nuestros clientes. La solución central está envuelta en una colección de servicios de Docker e implementada en cualquier contexto que sea necesario, incluso en servidores de desarrollo locales o locales. El caso de uso para nosotros es un poco diferente, ya que nuestra solución se centra en el procesamiento de datos y las canalizaciones frente a un recurso compartido de archivos. En un ejemplo de Salesforce, un cliente utilizará SFTP como método de transporte para enviar correo electrónico, comprar ... datos a un punto SFTP / S3. Esto se asigna a una clave de objeto en S3. A su llegada, los datos se recogen, procesan, enrutan y cargan en un almacén. También tenemos requisitos de auditoría bastante significativos para cada transferencia, algo que los registros de Cloudwatch para AWS no proporcionan directamente.
Como otros han mencionado, rodar el tuyo también es una opción. Con AWS Lightsail puede configurar un clúster, digamos 4, de instancias de $ 10 2GB usando Route 53 o un ELB.
En general, es genial ver que AWS ofrece este servicio y espero que madure con el tiempo. Sin embargo, dependiendo de su caso de uso, las soluciones alternativas pueden ser más adecuadas.
fuente