¿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.
¿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.
Respuestas:
Hay tres opciones
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 .
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
:
<bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
Para obtener más información, consulte mi guía Configuración de un acceso SFTP a Amazon 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.
root
da permission denied
problemas de transferencia posteriores cuando se conecta a ec2-user
través de SFTP. /mnt/<bucket>
La carpeta es propiedad root
y tiene el grupo root
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:
-o stat_cache_expire
(el valor predeterminado no caduca)especificar el tiempo de caducidad (segundos) para las entradas en el caché de estadísticas
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.
-o enable_noobj_cache
(el valor predeterminado es deshabilitar)habilitar entradas de caché para el objeto que no existe. s3fs siempre tiene que verificar si el archivo (o subdirectorio) existe debajo del objeto (ruta) cuando s3fs ejecuta algún comando, ya que s3fs ha reconocido un directorio que no existe y tiene archivos o subdirectorios en sí mismo. Aumenta la solicitud de ListBucket y hace que el rendimiento sea malo. Puede especificar esta opción para el rendimiento, s3fs memoriza en el caché de estadísticas que el objeto (archivo o directorio) no existe.
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.
-o enable_content_md5
(el valor predeterminado es deshabilitar)verificar los datos cargados sin multiparte mediante el encabezado content-md5. Habilite el envío del encabezado "Content-MD5" al cargar un objeto sin publicación de varias partes. Si esta opción está habilitada, tiene algunas influencias en el rendimiento de s3fs al cargar objetos pequeños. Debido a que s3fs siempre verifica MD5 al cargar objetos grandes, esta opción no afecta a los objetos grandes.
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 unContent-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.
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.
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
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.
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.
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.
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.