Как использовать сценарий оболочки и интерфейс командной строки AWS для автоматического ежедневного копирования файла из одного сегмента S3 в другой? - PullRequest
0 голосов
/ 07 января 2019

Я хотел бы создать способ (с использованием сценариев оболочки и интерфейса командной строки AWS), чтобы можно было автоматизировать следующее:

  1. Копирование определенных файлов из корзины s3
  2. Вставьте их в другое ведро в S3.

Будет ли работать приведенная ниже команда синхронизации?

aws s3 sync s3://directory1/bucket1 s3://directory2/bucket2 --exclude "US*.gz" --exclude "CA*.gz" --include "AU*.gz"

Цель здесь - ТОЛЬКО передавать файлы, имена файлов которых начинаются с «AU» и исключать все остальное, все в максимально возможной степени автоматизировано. Кроме того, возможно ли исключить очень старые файлы?

Вторая часть вопроса состоит в том, что мне нужно добавить в мой сценарий оболочки, чтобы максимально автоматизировать этот процесс, так как файлы "AU" сбрасываются в эту папку каждый день?

1 Ответ

0 голосов
/ 07 января 2019

Копирование объектов

CLI AWS, безусловно, может копировать объекты между корзинами. Фактически, он даже не требует загрузки файлов - S3 будет копировать непосредственно между сегментами, даже если они находятся в разных регионах.

Команда aws s3 sync, безусловно, является простым способом сделать это, так как она будет реплицировать любые файлы из источника в место назначения без необходимости конкретно указывать, какие файлы копировать.

Чтобы копировать только AU* файлов, используйте: --exclude "*" --include "AU*"

См .: Использование фильтров исключения и включения

Вы спрашивали об исключении старых файлов - команда sync будет синхронизировать все файлы, поэтому все ранее скопированные файлы не будут скопированы снова. По умолчанию любые файлы, удаленные из источника, будут , а не удаляться в месте назначения до тех пор, пока не будет запрошено специально.

Автоматизировать

Как это автоматизировать? Наиболее облачный способ сделать это - создать Лямбда-функцию AWS . Лямбда-функция может автоматически запускаться с помощью правила Amazon CloudWatch Events по регулярному расписанию.

Однако AWS CLI по умолчанию не установлен в Lambda, поэтому это может быть немного сложнее. См .: Запуск команд aws-cli внутри лямбда-функции AWS - Alestic.com

Было бы лучше, чтобы функция Lambda выполняла саму копию, а не вызывала интерфейс командной строки AWS.

Альтернативная идея

Amazon S3 можно настроить так, чтобы запускать функцию AWS Lambda при каждом добавлении нового объекта в корзину S3 . Таким образом, как только объект будет добавлен в S3, он будет скопирован в другую корзину Amazon S3. Логика в функции Lambda может определять, копировать или нет файл, например, проверка начинается с AU.

...