Есть ли способ подключиться к корзине Amazon S3 через FTP или SFTP вместо встроенного интерфейса передачи файлов Amazon в консоли AWS? Кажется странным, что это не легкодоступный вариант.
Есть ли способ подключиться к корзине Amazon S3 через FTP или SFTP вместо встроенного интерфейса передачи файлов Amazon в консоли AWS? Кажется странным, что это не легкодоступный вариант.
Ответы:
Есть три варианта.
В консоли Amazon AWS перейдите на страницу AWS Transfer for SFTP и создайте новый сервер.
На странице SFTP-сервера добавьте нового пользователя SFTP (или пользователей).
Полномочия пользователей регулируются связанной ролью AWS в службе IAM (для быстрого начала вы можете использовать политику AmazonS3FullAccess ).
Роль должна иметь доверительные отношения с transfer.amazonaws.com
.
Подробнее см. Мое руководство Настройка доступа SFTP к Amazon S3 .
Просто подключите корзину с помощью 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 .
Или используйте любой бесплатный «клиент FTP / SFTP» , который также является «клиентом S3» , и у вас ничего не настроено на стороне сервера. Например, мой WinSCP или Cyberduck .
WinSCP имеет даже сценарии и интерфейс .NET / PowerShell , если вам нужно автоматизировать передачу.
root
позже, создает permission denied
проблемы с передачей при соединении ec2-user
через SFTP. /mnt/<bucket>
папка принадлежит root
и имеет группу root
.
allow_other
(или -o allow_other
если монтируется из командной строки s3fs) .. работает для меня. В моем случае также неплохо написать файлы с правами только для чтения (-o default_acl = public-read) (в приватной корзине).
Обновить
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
там не было.
Независимо от проблем с производительностью, которые могут возникнуть с ProFTPd, которые -o enable_content_md5
устраняются с помощью вышеуказанных изменений, вы также должны включить их в s3fs.
-o enable_content_md5
(по умолчанию отключено)проверка загруженных данных без составных частей с помощью заголовка content-md5. Включите отправку заголовка «Content-MD5» при загрузке объекта без составной публикации. Если эта опция включена, она влияет на производительность s3fs при загрузке небольших объектов. Поскольку s3fs всегда проверяет MD5 при загрузке большого объекта, эта опция не влияет на большой объект.
Это вариант, который никогда не должен был быть - он всегда должен быть включен, потому что без этого обходится проверка критической целостности только для незначительного выигрыша в производительности. Когда объект загружен в S3 с Content-MD5:
заголовком, S3 проверит контрольную сумму и отклонит объект, если он был поврежден при передаче. Как бы маловероятно это ни было, кажется, близоруко отключить эту проверку безопасности.
Цитаты взяты из справочной страницы s3fs. Грамматические ошибки в оригинальном тексте.
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
- я не могу изменить какие-либо разрешения для папок в папке Mounting S3 после ее создания.
Ответ с 2014 года для людей, которые голосуют против меня:
Ну, S3 не FTP. Однако есть множество клиентов, которые поддерживают S3.
Практически каждый известный FTP-клиент в OS X имеет поддержку, включая Transmit и Cyberduck .
Если вы работаете в Windows, взгляните на Cyberduck или CloudBerry .
Обновленный ответ на 2019 год:
AWS недавно выпустила сервис AWS Transfer for SFTP , который может сделать то, что вы ищете.
Или раскрутить экземпляр Linux для SFTP-шлюза в свою инфраструктуру AWS, которая сохраняет загруженные файлы в корзину Amazon S3.
Поддерживается Thorntech
Filezilla только что выпустила Pro версию своего FTP-клиента. Он подключается к блокам S3 в обтекаемом FTP-режиме. Я использую это сам (никакой принадлежности вообще), и это прекрасно работает.
WinSCp теперь поддерживает протокол S3
Сначала убедитесь, что у вашего пользователя AWS с разрешениями доступа S3 создан «Идентификатор ключа доступа». Вы также должны знать «Секретный ключ доступа». Ключи доступа создаются и управляются на странице «Пользователи» IAM Management Console.
Убедитесь, что выбран новый узел сайта.
На узле Новый сайт выберите протокол Amazon S3.
Введите свой идентификатор ключа доступа пользователя AWS и секретный ключ доступа
Сохраните настройки своего сайта с помощью кнопки Сохранить.
Авторизуйтесь, используя кнопку «Войти».
Amazon выпустила SFTP-сервисы для S3, но они выполняют только SFTP (не FTP или FTPES), и они могут быть слишком дорогими в зависимости от ваших обстоятельств.
Я являюсь основателем DocEvent.io , и мы предоставляем шлюзы FTP / S для вашей корзины S3 без необходимости раскручивать серверы или беспокоиться об инфраструктуре.
Есть также другие компании, которые предоставляют отдельный FTP-сервер, который вы платите за месяц и который может подключаться к корзине S3 через конфигурацию программного обеспечения, например brickftp.com .
Наконец, есть также несколько приложений AWS Marketplace, которые могут помочь, вот ссылка для поиска . Многие из этих экземпляров раскручиваются в вашей собственной инфраструктуре - это означает, что вам придется самостоятельно управлять и обновлять экземпляры, которые со временем могут быть сложны в обслуживании и настройке.
Как отмечали другие авторы, сервис AWS Transfer for SFTP имеет некоторые ограничения. Вам необходимо тщательно согласовать требования. Например, отсутствуют квоты, белые / черные списки, ограничения на типы файлов, а для доступа без ключа требуются внешние службы. Есть также определенные накладные расходы, связанные с управлением пользователями и IAM, что может стать проблемой в масштабе.
У нас работает шлюз SFTP S3 Proxy около 5 лет для наших клиентов. Основное решение заключено в набор сервисов Docker и развернуто в любом контексте, даже на локальных или локальных серверах разработки. Вариант использования для нас немного отличается, поскольку наше решение сфокусировано на обработке данных и конвейерах, а не на общем файловом ресурсе. В примере с Salesforce клиент будет использовать SFTP в качестве способа передачи, отправляющего электронную почту, покупая ... данные в точку SFTP / S3. Это сопоставлено ключу объекта на S3. По прибытии данные собираются, обрабатываются, маршрутизируются и загружаются на склад. Мы также предъявляем довольно значительные требования к аудиту для каждой передачи, что в журналах Cloudwatch для AWS напрямую не предусмотрено.
Как уже упоминалось, прокатка тоже возможна. Используя AWS Lightsail, вы можете настроить кластер, скажем, 4, из 10 экземпляров по 2 ГБ, используя Route 53 или ELB.
В целом, приятно видеть, что AWS предлагает эту услугу, и я ожидаю, что со временем она станет более зрелой. Однако, в зависимости от вашего варианта использования, альтернативные решения могут быть более подходящими.