Третья сторона отправляет мне ежедневную загрузку файлов журналов в корзину S3. Я пытаюсь использовать DataPipeline, чтобы преобразовать их в немного другой формат с помощью awk, поместить новые файлы обратно на S3, а затем отодвинуть исходные файлы в сторону, чтобы завтра мне не пришлось снова обрабатывать одни и те же файлы.
Есть ли чистый способ сделать это? В настоящее время моя команда оболочки выглядит примерно так:
#!/usr/bin/env bash
set -eu -o pipefail
aws s3 cp s3://example/processor/transform.awk /tmp/transform.awk
for f in "${INPUT1_STAGING_DIR}"/*; do
basename=${f//+(*\/|.*)}
unzip -p "$f" | awk -f /tmp/transform.awk | gzip > ${OUTPUT1_STAGING_DIR}/$basename.tsv.gz
done
Я мог бы использовать инструмент aws cli, чтобы перемещать исходный файл в сторону при каждой итерации цикла, но это кажется ненадежным — если мой цикл завершается на полпути обработки, эти более ранние файлы будут потеряны.