#amazon-web-services #amazon-s3 #terraform #terraform-provider-aws #amazon-s3-bucket
Вопрос:
Я пишу это правило жизненного цикла корзины S3:
lifecycle_rules = [ { id = "log" enabled = true prefix = "log/" tags = { "rule" = "log" "autoclean" = "true" } expiration = { days = 365 } } ]
Макет ASCII-схемы корзины представлен ниже: Журналы динамически записываются каждый день в эту корзину. Некоторые в папке logs/
, некоторые во вложенной failed_logs/
папке, а некоторые в корневой папке корзины.
BUCKET/ | nonlogfile.exe log_file_that_i_DONT_wanna_delete.log logs/ | file1 (Created 2021-01-01) file2 (Created 2021-01-02) failed_logs/ | file3 (Created 2021-01-03) file4 (Created 2021-01-04)
Моя цель-истечь срок действия каждого файла в log/
папке (и ее подпапки failed_logs
через 365 дней.
`file1` would expire at 2022-01-01 `file2` would expire at 2022-01-02 `file3` would expire at 2022-01-03 `file4` would expire at 2022-01-04
в то время как
nonlogfile.exe log_file_that_i_DONT_wanna_delete.log
никогда не истечет.
Документация aws_s3_bucket Terraform гласит, что:
lifecycle_rule
Объект поддерживает следующее:
prefix
— (Необязательно) Префикс ключа объекта, идентифицирующий один или несколько объектов, к которым применяется правило.
tags
— (Необязательно) Указывает ключ и значение тегов объекта.
- Я не понимаю этого
prefix
атрибута - Мои файлы не помечены
Как я могу нацелить их, как описано выше, на основе их местоположения в корзине?
Комментарии:
1. Вы хотите сказать, что префикс, который вы используете, не работает?
2. Я говорю, что не могу понять, что должен делать этот атрибут. Что такое префикс ключа объекта? Применимо ли это к папкам? Например, будет ли добавление
prefix = 'log'
нацелено на все файлы в папке журнала и все файлы во всех вложенных папках папки журнала?3. Префикс
log
не будет применяться ко всем файлам рекурсивно в каталоге, он будет искать файл с именемlog
и применяться только к этому файлу. Однако значение префиксаlog/
будет рекурсивно применяться ко всем файлам в этом «каталоге» и «подкаталогах» ( я заключил слово «каталог» в кавычки, потому что на самом деле это не каталоги, а префиксы ).log/
является ли правильным префиксом, предполагающим, что каталог журнала находится в корне вашего ведра4. Спасибо тебе, Крис. Это очень полезно, если вы хотите опубликовать это в качестве ответа, я приму его.
Ответ №1:
Структура S3 Объяснена
Атрибут префикса-это просто путь к вашему объекту s3 за вычетом имени корзины. Если бы у вас был следующий «каталог» S3 s3://ec-integration-files/logs/
, значение префикса было бы просто logs/
.
Атрибут называется префиксом, а не путем, потому что, хотя s3 выглядит как древовидная структура каталогов, технически это плоское хранилище. Однако Консоль управления отображает объекты так, как если бы они хранились в структуре каталогов, и для этого использует префиксы.
Еще один момент прояснения: у вас могут быть два объекта в корне ( или на любой глубине ) с именем
logs
иlogs/
. Один из них будет отображаться в виде каталога в консоли управления, а другой-в виде объекта file, но на самом деле это всего лишь два объекта с разными именами