Автоматизировать FTP-передачу файлов (csv) в корзину Amazon S3

#amazon-web-services #amazon-s3 #amazon-ec2 #aws-lambda

#amazon-веб-сервисы #amazon-s3 #amazon-ec2 #aws-lambda

Вопрос:

Я хочу автоматизировать загрузку / прием данных в корзину Amazon S3. Я не хочу использовать такие программы, как Filezilla, для передачи файлов FTP на S3.

Файлы будут доступны на FTP-сервере ежедневно. Я хочу ежедневно выбирать эти файлы с FTP-сервера и хранить в Amazon S3. Могу ли я настроить задания cron или скрипты для запуска в AWS экономически эффективным способом. Какие экземпляры AWS могут помочь мне в достижении этого.

Размер файлов составляет около 1 ГБ.

Комментарии:

1. Пожалуйста, поправьте меня, если я ошибаюсь, вы хотите загружать файлы на s3? Если да, то откуда?

2. Почему вы хотите использовать FTP? Что вы подразумеваете под «извлеченными» — откуда они будут «извлечены»? «Извлекаются» ли они с FTP-сервера? Что будет сделано с файлами, когда они окажутся в S3? Пожалуйста, отредактируйте свой вопрос, чтобы рассказать нам больше о ваших реальных целях (например, о том, чего вы хотите достичь, а не о том, как ), чтобы мы могли помочь вам найти наилучший способ достижения ваших целей.

3. @AllanChua Источником файла является FTP-сервер. Ежедневные данные будут загружаться на FTP-сервер другой командой (расположенной в другой стране), и мне нужно ежедневно получать эти данные и загружать в S3.

4. Есть ли здесь актуальный вопрос программирования? Потому что на все «вопросы» можно ответить, просто просмотрев документы Amazon, иногда даже на страницах маркетинга (например, планирование и лямбды). Реальные вопросы программирования вообще не задаются — как загружать файлы с FTP программно, как использовать S3 API

5. @JohnRotenstein Да, файлы будут извлечены с FTP-сервера. Моя цель состоит в том, чтобы: — периодически получать данные и сохранять их в S3 для дальнейшего анализа с использованием Tableau / QuickSight.

Ответ №1:

Amazon S3 — это служба хранения объектов. Он не может «извлекать» данные из внешнего хранилища.

Поэтому вам понадобится скрипт или программа, которая будет:

  • Извлеките данные с FTP-сервера и
  • Загрузите данные в Amazon S3

Лучше всего было бы запустить такой скрипт с самого FTP-сервера, чтобы данные можно было отправлять на S3 без предварительной загрузки с FTP-сервера. Если это невозможно, то вы можете запустить скрипт на любом компьютере в Интернете, например, на вашем собственном компьютере или экземпляре Amazon EC2.

Самый простой способ загрузки на Amazon S3 — использовать интерфейс командной строки AWS (CLI). В нем есть aws s3 cp команда для копирования файлов, или, в зависимости от того, что необходимо скопировать, может быть проще использовать aws s3 sync команду, которая автоматически копирует новые или измененные файлы.

Сценарий может быть запущен по расписанию (cron в Linux или запланированная задача в Windows).

Если вы используете экземпляр Amazon EC2, вы можете сэкономить деньги, отключив экземпляр, когда он не требуется. Поток может быть:

  • Создайте правило событий Amazon CloudWatch, которое запускает функцию AWS Lambda
  • Функция AWS Lambda может вызываться StartInstances() для запуска остановленного экземпляра EC2
  • Экземпляр Amazon EC2 может использовать сценарий запуска (см. Подробности Ниже), который запустит ваш процесс
  • В конце процесса сообщите операционной системе о завершении работы ( sudo shutdown now -h )

Это может показаться большим количеством шагов, но событие CloudWatch и функция Lambda просты в настройке.

Чтобы выполнять скрипт при каждом запуске экземпляра Linux, поместите его в: /var/lib/cloud/scripts/per-boot/

Смотрите также: Автоматическая остановка экземпляров EC2 по завершении задачи — Сообщество разработчиков

Комментарии:

1. Спасибо @John. Но у меня нет сервера для запуска задания cron. Итак, я планировал использовать задания cron для запуска / остановки экземпляра EC2, который, в свою очередь, будет извлекать мои данные. Я знаю, что AWS Lambda можно использовать для запуска / остановки экземпляра EC2. Существуют ли какие-либо другие сервисы AWS для достижения этой цели?