Подтвердить что ты не робот

FTP/SFTP-доступ к ведро Amazon S3

Есть ли способ подключения к ведро Amazon S3 с FTP или SFTP, а не встроенный интерфейс передачи файлов Amazon в консоли AWS? Кажется странным, что это не легкодоступный вариант.

4b9b3361

Ответ 1

Есть три варианта.

  • Вы можете использовать собственную управляемую службу SFTP, недавно добавленную Amazon (которую проще настроить).
  • Или вы можете смонтировать блок в файловую систему на сервере Linux и получить доступ к файлам, используя SFTP, как и любые другие файлы на сервере (что дает вам больший контроль).
  • Или вы можете просто использовать (GUI) клиент, который изначально поддерживает протокол S3 (что бесплатно).

Управляемая служба SFTP

  • В консоли Amazon AWS перейдите на страницу AWS Transfer for SFTP и создайте новый сервер.

  • На странице SFTP-сервера добавьте нового пользователя SFTP (или пользователей).

    • Разрешения пользователей регулируются связанной ролью AWS в службе IAM (для быстрого начала вы можете использовать политику AmazonS3FullAccess).

    • Роль должна иметь доверительные отношения с transfer.amazonaws.com.

Подробнее см. Мое руководство Настройка SFTP-доступа к Amazon S3.


Монтирование Bucket на Linux Server

Просто смонтируйте s3fs с s3fs файловой системы s3fs (или аналогичной) на сервере Linux (например, Amazon EC2) и используйте встроенный сервер SFTP-сервера для доступа к корзине.

  • Установите s3fs
  • Добавьте свои учетные данные безопасности в форме access-key-id:secret-access-key в /etc/passwd-s3fs
  • Добавьте запись установки ведра в fstab:

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

Подробнее см. Мое руководство Настройка SFTP-доступа к Amazon S3.


Используйте S3 Client

Или используйте любой бесплатный "клиент FTP/SFTP", который также является "клиентом S3", и у вас ничего не настроено на стороне сервера. Например, мой WinSCP или Cyberduck.

WinSCP имеет даже сценарии и интерфейс .NET/PowerShell, если вам нужно автоматизировать передачу.

Ответ 2

Обновить

Теперь S3 предлагает полностью управляемый SFTP Gateway Service для S3, который интегрируется с IAM и может администрироваться с помощью aws-cli.


Есть теоретические и практические причины, почему это не идеальное решение, но оно работает...

Вы можете установить службу FTP/SFTP (например, proftpd) на сервере linux, либо в EC2, либо в своем собственном центре обработки данных... затем смонтировать контейнер в файловую систему, где сервер ftp настроен для chroot, используя s3fs.

У меня есть клиент, который обслуживает контент из S3, и контент предоставляется им третьей стороной, которая поддерживает только ftp-нажатия... так, с некоторой нерешительностью (из-за несоответствия импеданса между S3 и реальной файловой системой), но не хватает время написать правильный пакет программного обеспечения сервера шлюза FTP/S3 (который я все еще собираюсь сделать на днях), я предложил и развернул для них это решение несколько месяцев назад, и они не сообщили о каких-либо проблемах с системой.

В качестве бонуса, поскольку proftpd может привязывать каждого пользователя к своему домашнему каталогу и "притворяться" (насколько пользователь может сказать), что файлы, принадлежащие пользователю proftpd, фактически принадлежат зарегистрированному пользователю, это разделяет каждого пользователя ftp на "подкаталог" корзины и делает файлы других пользователей недоступными.


Однако существует проблема с конфигурацией по умолчанию.

Как только вы начнете получать несколько десятков или сотен файлов, проблема проявится, когда вы извлечете список каталогов, потому что ProFTPd будет пытаться читать файлы .ftpaccess снова и снова, и снова, и для каждого файла в каталог, .ftpaccess проверяется, чтобы увидеть, разрешено ли пользователю просматривать его.

Вы можете отключить это поведение в ProFTPd, но я полагаю, что наиболее правильная конфигурация - настроить дополнительные параметры -o enable_noobj_cache -o stat_cache_expire=30 в s3fs:

-o stat_cache_expire (по умолчанию не истекает)

указать время истечения (в секундах) для записей в кэше статистики

Без этой опции вы будете делать меньше запросов к S3, но вы также не всегда будете надежно обнаруживать изменения, внесенные в объекты, если внешние процессы или другие экземпляры s3fs также изменяют объекты в корзине. Значение "30" в моей системе было выбрано несколько произвольно.

-o enable_noobj_cache (по умолчанию отключено)

включить записи кэша для объекта, который не существует. s3fs всегда должен проверять, существует ли файл (или подкаталог) в объекте (пути), когда s3fs выполняет какую-либо команду, поскольку s3fs распознал каталог, который не существует, и имеет файлы или подкаталоги под собой. Это увеличивает запрос ListBucket и ухудшает производительность. Вы можете указать эту опцию для производительности, s3fs запоминает в кэше статистики, что объект (файл или каталог) не существует.

Эта опция позволяет s3fs помнить, что .ftpaccess там не было.


-o enable_content_md5 от проблем с производительностью, которые могут возникнуть с ProFTPd, которые -o enable_content_md5 вышеуказанными изменениями, вам также необходимо включить -o enable_content_md5 в s3fs.

-o enable_content_md5 (по умолчанию отключено)

проверка загруженных данных без multipart по заголовку content-md5. Включите отправку заголовка "Content-MD5" при загрузке объекта без составной публикации. Если эта опция включена, она влияет на производительность s3fs при загрузке небольших объектов. Поскольку s3fs всегда проверяет MD5 при загрузке большого объекта, эта опция не влияет на большой объект.

Это опция, которая никогда не должна была быть опцией - она всегда должна быть включена, потому что без этого обходится проверка критической целостности только для незначительного выигрыша в производительности. Когда объект загружается в S3 с заголовком Content-MD5:, S3 проверяет контрольную сумму и отклоняет объект, если он был поврежден при передаче. Как бы маловероятно это ни было, кажется, близоруко отключить эту проверку безопасности.

Цитаты взяты из справочной страницы s3fs.Грамматические ошибки в оригинальном тексте.

Ответ 3

Ответ с 2014 года для людей, которые голосуют против меня:

Ну, S3 не FTP. Однако есть много и много клиентов, которые поддерживают S3.

Практически каждый известный FTP-клиент в OS X имеет поддержку, включая Transmit и Cyberduck.

Если вы работаете в Windows, взгляните на Cyberduck или CloudBerry.

Обновленный ответ на 2019 год:

AWS недавно выпустила сервис AWS Transfer for SFTP, который может сделать то, что вы ищете.

Ответ 4

Или запустите экземпляр Linux для SFTP-шлюза в вашей инфраструктуре AWS, которая сохраняет загруженные файлы в ваш ковш Amazon S3.

Поддерживается Thorntech

Ответ 5

Filezilla только что выпустила Pro версию своего FTP-клиента. Он подключается к ведрам S3 в упрощенном FTP-режиме. Я использую его сам (никакой привязанности вообще), и он отлично работает.

Ответ 6

WinSCp теперь поддерживает протокол S3

Во-первых, убедитесь, что у вашего пользователя AWS с правами доступа S3 создан "Идентификатор ключа доступа". Вы также должны знать "Секретный ключ доступа". Ключи доступа создаются и управляются на странице "Пользователи" IAM Management Console.

Убедитесь, что выбран новый узел сайта.

На узле Новый сайт выберите протокол Amazon S3.

Введите свой идентификатор ключа доступа пользователя AWS и секретный ключ доступа

Сохраните настройки своего сайта с помощью кнопки Сохранить.

Авторизуйтесь, используя кнопку "Войти".

Ответ 7

Как отмечали другие авторы, сервис AWS Transfer for SFTP имеет некоторые ограничения. Вам необходимо тщательно согласовать требования. Например, отсутствуют квоты, белые/черные списки, ограничения по типам файлов, а для доступа без ключа требуются внешние службы. Есть также определенные накладные расходы, связанные с управлением пользователями и IAM, что может стать проблемой в масштабе.

Уже около 5 лет мы используем прокси-шлюз SFTP S3 для наших клиентов. Базовое решение заключено в набор сервисов Docker и развернуто в любом контексте, даже на локальных или локальных серверах разработки. Вариант использования для нас немного отличается, поскольку наше решение сфокусировано на обработке данных и конвейерах, а не на общем файловом ресурсе. В примере с Salesforce клиент будет использовать SFTP в качестве способа передачи, отправляющего электронную почту, покупая... данные в точку SFTP/S3. Это сопоставлено ключу объекта на S3. По прибытии данные собираются, обрабатываются, маршрутизируются и загружаются на склад. У нас также есть довольно существенные требования к аудиту для каждой передачи, что в журналах Cloudwatch для AWS напрямую не предусмотрено.

Как уже упоминалось, прокатка тоже возможна. Используя AWS Lightsail, вы можете настроить кластер, скажем, 4, из 10 экземпляров по 2 ГБ, используя либо Route 53, либо ELB.

В целом, приятно видеть, что AWS предлагает эту услугу, и я ожидаю, что со временем она станет более зрелой. Однако, в зависимости от вашего варианта использования, могут подойти альтернативные решения.

Ответ 8

Amazon выпустила SFTP-сервисы для S3, но они выполняют только SFTP (не FTP или FTPES), и они могут быть слишком дорогими в зависимости от ваших обстоятельств.

Я являюсь основателем DocEvent.io, и мы предоставляем шлюзы FTP/S для вашей корзины S3 без необходимости раскручивать серверы или беспокоиться об инфраструктуре.

Есть также другие компании, которые предоставляют отдельный FTP-сервер, который вы платите за месяц и который может подключаться к корзине S3 через конфигурацию программного обеспечения, например brickftp.com.

Наконец, есть также несколько приложений AWS Marketplace, которые могут помочь, вот ссылка для поиска. Многие из этих экземпляров раскручиваются в вашей собственной инфраструктуре - это означает, что вам придется самостоятельно управлять и обновлять экземпляры, которые со временем могут быть сложны в обслуживании и настройке.