Saltar al contenido

Acceso FTP/SFTP a un Amazon S3 Bucket

Nuestro team de expertos despúes de varios días de trabajo y recopilar de información, hallamos la respuesta, esperamos que te resulte útil en tu plan.

Solución:

Hay tres opciones.

  • Puede usar un servicio SFTP administrado nativo agregado recientemente por Amazon (que es más fácil de configurar).
  • O puede montar el depósito en un sistema de archivos en un servidor Linux y acceder a los archivos usando SFTP como cualquier otro archivo en el servidor (lo que le brinda un mayor control).
  • O simplemente puede usar un cliente (GUI) que admita de forma nativa el protocolo S3 (lo que es gratuito).

Servicio SFTP gestionado

  • En su consola de 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 un inicio rápido, puede utilizar AmazonS3Acceso completo política).

    • 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 en servidor Linux

Simplemente monte el cubo usando s3fs sistema de archivos (o similar) a un servidor Linux (por ejemplo, Amazon EC2) y use el servidor SFTP integrado del servidor para acceder al depósito.

  • Instala el s3fs
  • Agrega tus credenciales de seguridad en un formulario access-key-id:secret-access-key para /etc/passwd-s3fs
  • Agregue una entrada de montaje de cubeta a fstab:

     /mnt/ 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.


Usar cliente S3

O usa cualquier gratis “Cliente FTP/SFTP”eso 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.

Actualizar

S3 ahora ofrece un servicio de puerta de enlace SFTP completamente administrado para S3 que se integra con IAM y se puede administrar mediante 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 desde S3, y el contenido se lo proporciona un tercero que solo admite transferencias ftp… así que, con algunas dudas (debido a la falta de coincidencia de impedancia entre S3 y un sistema de archivos real), pero falta el 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), les propuse e implementé esta solución hace varios meses y no informaron ningún problema con el sistema.

Como beneficio adicional, dado que proftpd puede hacer chroot a cada usuario en su propio directorio de inicio y “pretender” (hasta donde el usuario pueda ver) que los archivos propiedad del usuario proftpd son en realidad propiedad del usuario registrado, esto segrega a cada usuario de ftp en un “subdirectorio” del cubo y hace que los archivos de los otros 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 obtenga una lista de directorios, porque ProFTPd intentará leer el .ftpaccess archivos una, y otra, y otra vez, y para cada archivo en el directorio, .ftpaccess se comprueba para ver si se debe permitir que el usuario lo vea.

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 es no caducar)

especifique el tiempo de caducidad (segundos) para las entradas en el caché de estadísticas

Sin esta opción, realizará 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 se seleccionó de manera un tanto arbitraria.

-o enable_noobj_cache (el valor predeterminado es deshabilitar)

habilite las entradas de caché para el objeto que no existe. s3fs siempre tiene que verificar si el archivo (o subdirectorio) existe bajo el objeto (ruta) cuando s3fs ejecuta algún comando, ya que s3fs ha reconocido un directorio que no existe y tiene archivos o subdirectorios bajo 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 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 habilitar -o enable_content_md5 en s3fs.

-o enable_content_md5 (el valor predeterminado es deshabilitar)

Verificación de datos cargados sin multiparte por encabezado content-md5. Habilite el envío del encabezado “Content-MD5” al cargar un objeto sin una 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 debe estar habilitada, porque no hacer esto evita una verificación de integridad crítica solo para un beneficio de rendimiento insignificante. Cuando se carga un objeto 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 desactivar esta comprobación de seguridad.

Las citas son de la página man de s3fs. Los errores gramaticales están en el texto original.

Respuesta de 2014 para las personas que me votan negativo:

Bueno, S3 no es FTP. Sin embargo, hay muchísimos 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *