#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 для достижения этой цели?