Мне нужно настроить SFTP-сервер, который, по сути, имеет очень большую емкость. Мне нужно предоставить один из наших партнеров для входа в SFTP-систему на сервер, где они будут загружать миллионы файлов общим объемом несколько сотен терабайт. Затем я буду избирательным и довольно редко читаю некоторые из этих файлов. Это единственное актуальное требование, любой выбор технологии возможен.
Самое простое, что приходит на ум, - это иметь какой-то экземпляр EC2, работающий с SFTP-сервером таким образом, чтобы все загруженное либо напрямую отправлялось на S3, либо какой-то процесс обнаруживал новые файлы при их загрузке, копировал их S3, и удаляет их с диска.
Это лучший способ? Есть ли другой способ получить сервер, который по существу имеет «бесконечно и магически растущее дисковое пространство»?
Спасибо за вашу помощь! Даниил
источник
Ответы:
Я ответил на тот же вопрос о переполнении стека .
s3fs - действительно разумное решение, и в моем случае я связал его с proftpd с отличными результатами, несмотря на теоретические / потенциальные проблемы.
В то время, когда я писал ответ, я настроил это только для одного из моих клиентов-консультантов ... но с тех пор я также начал пить свою собственную помощь по курсу и использую ее в производстве на своей повседневной работе. Компании, которыми мы обмениваемся данными с загрузкой и загрузкой файлов в течение всего дня на моем сервере sftp, который хранит все непосредственно на S3. В качестве бонуса моя система экспорта отчетов, которая записывает таблицы Excel непосредственно на S3, может экспортировать отчеты «на FTP-сервер», просто помещая их непосредственно в корзину ftp-сервера с соответствующими метаданными для отображения uid, gid и режим каждого файла. (s3fs использует заголовки x-amz-meta-uid, -gid и -mode для эмуляции разрешений файловой системы). Когда клиент входит на сервер, файлы отчетов просто ... там.
Я действительно думаю, что идеальным решением, вероятно, будет sftp к сервису шлюза S3, но я до сих пор не удосужился спроектировать его, так как это решение работает очень хорошо ... с некоторыми оговорками, конечно:
Не все значения по умолчанию для s3fs являются нормальными. Возможно, вы захотите указать эти параметры:
Вероятно, лучше использовать регион, отличный от стандарта США, потому что это единственный регион, который не обеспечивает согласованность чтения-после-записи для новых объектов. (Или, если вам нужно использовать US-Standard, вы можете использовать почти недокументированное имя хоста
your-bucket.s3-external-1.amazonaws.com
из региона us-east-1, чтобы предотвратить географическую маршрутизацию ваших запросов, что может улучшить согласованность.)В корзине включено управление версиями объектов, о которых s3fs совершенно не знает. Преимущество этого состоит в том, что даже если файл должен быть «растоптан», я всегда могу перейти к ведению версий для восстановления «перезаписанного» файла. Управление версиями объектов в S3 было блестяще спроектировано таким образом, что клиенты S3, которые не знают о версиях, ни в коем случае не отключены и не перепутаны, потому что, если вы не делаете REST-вызовы с поддержкой контроля версий, ответы, возвращаемые S3, совместимы с клиентами, которые имеют нет концепции управления версиями.
Также обратите внимание, что передача данных в S3 бесплатна . Вы платите только цену за запрос. Передача данных из S3 в EC2 в пределах региона также бесплатна. Только при переводе из S3 в Интернет, в Cloudfront или в другой регион AWS вы оплачиваете перевод. Если вы хотите использовать более дешевое хранилище с уменьшенной избыточностью, s3fs поддерживает это с
-o use_rrs
.Как забавно, вы всегда будете чувствовать себя нечетко, когда увидите 256 терабайт свободного пространства (и 0 использованных, поскольку реальный расчет размеров нецелесообразен из-за того, что S3 является хранилищем объектов, а не файловой системой). ).
Конечно, вы можете установить ведро в любом месте. У меня просто так получилось в / srv / s3fs.
источник
setupftpuser
который вызываетftpasswd
утилиту ProFTPd для создания пользователей, создания домашних каталогов и установки разрешений. Он также создает резервную копию файла пароля перед внесением изменений. При вызове существующего пользователя он сообщает, что пользователь уже подготовлен, и спрашивает, хотите ли вы изменить пароль. Графический интерфейс, который управляет практически тем же процессом, и он должен быть хорошо написан.Проверьте шлюз SFTP на торговой площадке AWS .
У нас возникли проблемы с надежностью в s3fs, поэтому мы разработали специальное решение специально для этой цели. Мы использовали его в производстве в течение нескольких лет без проблем и недавно выпустили его на AWS Marketplace.
источник
Есть два варианта. Вы можете использовать собственную управляемую SFTP-службу, недавно добавленную Amazon (которую проще настроить). Или вы можете смонтировать блок в файловую систему на сервере Linux и получить доступ к файлам, используя SFTP, как и любые другие файлы на сервере (что дает вам больший контроль).
Управляемая служба SFTP
В консоли Amazon AWS перейдите на страницу AWS Transfer for SFTP и создайте новый сервер.
На странице SFTP-сервера добавьте нового пользователя SFTP (или пользователей).
Разрешения пользователей регулируются связанной ролью AWS в службе IAM (для быстрого начала вы можете использовать политику AmazonS3FullAccess ).
Роль должна иметь доверительные отношения с
transfer.amazonaws.com
.Подробнее см. Мое руководство Настройка SFTP-доступа к Amazon S3 .
Монтирование Bucket на Linux Server
Как уже ответил @Michael , просто смонтируйте корзину с помощью
s3fs
файловой системы (или аналогичной) на сервере Linux (Amazon EC2) и используйте встроенный SFTP-сервер сервера для доступа к корзине.Вот основные инструкции:
s3fs
access-key-id:secret-access-key
в/etc/passwd-s3fs
Добавьте запись для монтажа ковша в
fstab
:Подробнее см. Мое руководство Настройка SFTP-доступа к Amazon S3 .
Используйте S3 Client
Или используйте любой бесплатный «клиент FTP / SFTP» , который также является «клиентом S3» , и у вас ничего не настроено на стороне сервера. Например, мой WinSCP или Cyberduck .
источник
Теперь AWS предоставляет сервис SFTP через S3, который называется AWS Transfer For SFTP . Он обладает преимуществами S3 (высоконадежное, доступное, распределенное хранилище) в сочетании с хорошо известным и устоявшимся протоколом SFTP.
По умолчанию пользователи проходят проверку подлинности с использованием пар секретного / открытого ключей, а с помощью политик IAM можно настроить разрешения для пользователей SFTP в сегментах S3. Вы можете добавить схемы аутентификации, реализовав свои собственные функции в AWS API Gateway и AWS Lambda.
Мы включили AWS Transfer для SFTP в дополнение Heroku под названием SFTP To Go, чтобы обеспечить гибкие схемы аутентификации и снизить совокупную стоимость владения (поскольку конечная точка службы имеет фиксированную стоимость на AWS, но может совместно использоваться многими пользователями без какой-либо защиты или безопасности). компромисс производительности.
источник