FTP / SFTP доступ до відра Amazon S3 [закрито]


146

Чи є спосіб підключення до відра Amazon S3 за допомогою FTP або SFTP, а не вбудованого інтерфейсу передачі файлів Amazon в консолі AWS? Здається дивним, що це не доступний варіант.


2
AWS, випущений у листопаді 2018 року, повністю керував SFTP-сервісом, що дозволяє передавати файли безпосередньо в Amazon S3 та виходити з нього. AWS Transfer для SFTP
mitaka

Відповіді:


100

Є три варіанти.

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

Керована служба SFTP

  • На консолі Amazon AWS перейдіть до AWS Transfer для SFTP та створіть новий сервер.

  • На сторінці сервера SFTP додайте нового користувача SFTP (або користувачів).

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

    • Роль повинна мати стосунки довіри transfer.amazonaws.com.

Докладніше див. У моєму посібнику Налаштування доступу SFTP до Amazon S3 .


Монтаж відра на Linux Server

Просто встановіть відро за допомогою 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

Або використовуйте будь-який безкоштовний "FTP / SFTP-клієнт" , це також "клієнт S3" , і у вас нічого не встановлено на стороні сервера. Наприклад, мій WinSCP або Cyberduck .

WinSCP має навіть сценарії та інтерфейс .NET / PowerShell , якщо вам потрібно автоматизувати передачі.


2
Встановлення відра як rootдасть пізніше permission deniedпроблеми з передачею при з'єднанні з ec2-userдопомогою SFTP. /mnt/<bucket>Папка належить rootі є групою root.
elvismdev

1
@elvismdev / others - змонтуйте як ftp-користувач (використовуючи параметри uid / gid) і переконайтесь, що він встановлений за допомогою allow_other(або -o allow_otherякщо монтується з командного рядка s3fs) .. працює для мене. Це також гарна ідея записувати файли як дозволи лише для читання (-o default_acl = public-read) у моєму випадку (на приватному відрі).
bshea

66

Оновлення

Тепер S3 пропонує повністю керовану службу шлюзу SFTP для S3, яка інтегрується з IAM і може управлятися за допомогою aws-cli.


Є теоретичні та практичні причини, чому це не ідеальне рішення, але воно працює ...

Ви можете встановити послугу FTP / SFTP (наприклад, proftpd) на Linux-сервер, або в EC2, або у власному центрі даних ..., а потім встановити відро у файлову систему, де ftp-сервер налаштований для хронування , використовуючи 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 перевірить контрольну суму і відхилить об'єкт, якщо він пошкоджений під час транзиту. Однак це навряд чи може бути недалеко відключеним перевірку безпеки.

Котирування зі сторінки man в s3fs. Граматичні помилки є в оригінальному тексті.


4
Ви могли б детальніше пояснити, чому це рішення не є ідеальним?
fernio

2
@MarcoMarsala виправлення для великих каталогів додано у відповідь.
Майкл - sqlbot

1
@ Michael-sqlbot Ви намагалися використати директиву "AllowOverride off" у налаштуваннях ProFTPd, щоб змусити її перестати читати файли ".ftpaccess" повністю?
Грег Дубіцький

1
Я спробував усе і можу встановити лише користувача: групу / дозволи на рівні папки, де встановлено відро S3. Потім ці дозволи поширюються вниз до кожної папки на 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- я не можу змінити жодних дозволів на папки в папці Mounted S3 після її створення.
Т. Брайан Джонс

1
@Sverre Я все ще використовую це рішення у виробництві. Це не доставляє мені ніяких проблем.
Майкл - sqlbot

24

Відповідь 2014 року для людей, які мене голосують:

Ну, S3 - це не FTP. Однак є багато і багато клієнтів, які підтримують S3.

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

Якщо у вас є Windows, подивіться на Cyberduck або CloudBerry .

Оновлена ​​відповідь на 2019 рік:

Нещодавно AWS випустила службу передачі AWS для SFTP , яка може робити те, що ви шукаєте.


2
Cyberduck працює фантастично легко, якщо ви новачок на сервері, як я. Просто натиснувши на Open Connection, вибравши S3 зі спадного меню та ввівши мої облікові дані. Набагато простіше, ніж деякі з варіантів, згаданих вище!
Маркіццо

7

Або відкрутити екземпляр Linux для шлюзу SFTP у вашій інфраструктурі AWS, який зберігає завантажені файли у відро Amazon S3.

За підтримки Thorntech


2
Ми вже кілька років використовуємо шлюз SFTP у виробництві для великих проектів. Ми виявили, що це надійніше, ніж s3fs
Jeff

3

Filezilla щойно випустила Pro версію свого FTP-клієнта. Він підключається до відра S3 у впорядкованому досвіді FTP. Я використовую його сам (ніякої приналежності немає), і він чудово працює.


3

WinSCp тепер підтримує протокол S3

По-перше, переконайтеся, що у вашого користувача AWS з дозволом доступу S3 створено "Ідентифікатор ключа доступу". Ви також повинні знати "секретний ключ доступу". Клавіші доступу створюються та керуються на сторінці Користувачів консолі управління IAM.

Переконайтесь, що вибрано новий вузол сайту.

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

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

Збережіть налаштування свого сайту за допомогою кнопки «Зберегти».

Увійти за допомогою кнопки Вхід.


2

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

Я Засновник DocEvent.io , і ми надаємо FTP / S шлюзи для вашого відра S3 без необхідності спінінгувати сервери та турбуватися про інфраструктуру.

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

Нарешті, є також додатки AWS Marketplace, які можуть допомогти, ось посилання на пошук . Багато з цих примірників у вашій власній інфраструктурі - це означає, що вам доведеться самостійно керувати та модернізувати екземпляри, що може важко підтримувати та конфігурувати з часом.


DocEvents виглядає добре, але у вас занадто багато обмежень на безкоштовний план ... Я навіть не міг спробувати послугу ...
D.Dimitrioglo

1

Як вказували інші афіші, існують деякі обмеження щодо передачі AWS для послуги SFTP. Вам потрібно уважно вирівняти вимоги. Наприклад, немає жодних квот, білих списків / чорних списків, обмежень типу файлів та доступу, не заснованих на ключах, потрібні зовнішні служби. Існує також певна накладні витрати, пов'язані з управлінням користувачами та IAM, які можуть бути больовими.

У нас запущений шлюз проксі SFTP S3 близько 5 років використовуємо для своїх клієнтів. Основне рішення загортається в колекцію Docker-сервісів і розгортається в будь-якому контексті, навіть на локальних або локальних серверах розробки. Випадок використання для нас дещо відрізняється, оскільки наше рішення - це орієнтована обробка даних та конвеєри проти спільного використання файлів. У прикладі Salesforce клієнт буде використовувати SFTP як спосіб транспортування відправки електронної пошти, придбання ... даних до точки SFTP / S3. Це відображено об'єктний ключ на S3. Після прибуття дані збираються, обробляються, маршрутизуються та завантажуються на склад. У нас також є досить значні вимоги до аудиту для кожної передачі, те, що журнали Cloudwatch для AWS безпосередньо не передбачені.

Як уже згадували інші, прокатка власних вагонів також є варіантом. Використовуючи AWS Lightsail, ви можете встановити кластер, скажімо, 4, екземпляри $ 10 2 ГБ, використовуючи Route 53 або ELB.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.