Есть ли способ итерации списка файлов из корзины aws s3 в сценариях оболочки?

#shell #amazon-s3

#оболочка #amazon-s3

Вопрос:

Я использую сценарии оболочки и хочу получить список файлов из корзины AWS S3, а затем выполнить цикл for на основе количества файлов, присутствующих в объекте list.

Вот мой код для получения файлов из корзины S3 в сценарии оболочки:

 S3_files=$(aws s3 ls s3://s3_bucket_path/ | awk '{print $4}')
  

S3_files переменная принимает список файлов как целую строку, поэтому не может выполнять итерацию с использованием цикла. Цикл выполняется только один раз, поскольку он рассматривает список файлов как строку, и выполняется только один раз. Ниже приведен мой код:

 for i in "${S3_files[@]}"
do
{
  echo "$i"
}
done
  

Итак, я хочу понять, как мы можем выполнить итерацию, используя цикл, основанный на общем количестве файлов.
Любая помощь приветствуется. Большое спасибо!

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

1. попробуйте S3_Files=( $(aws ... ) ) . Если в имена файлов встроены символы пробела, это тоже не сработает. Удачи.

2. К вашему сведению, если вам нужны только имена файлов, вы используете: aws s3api list-objects --bucket my-bucket --query Contents[].[Key] --output text