Terraform aws_s3_bucket_lifecycle_configuration не может удалить содержимое папки S3

У меня есть корзина S3, созданная с помощью Terraform, а также политика жизненного цикла, согласно которой срок действия всего ниже athena_results/ истекает через 3 дня. Мой код ниже. Проблема, с которой я столкнулся, заключается в том, что эта политика жизненного цикла не удаляет данные под athena_results/ через 3 дня. Мне интересно, что я делаю. Что-то не так или чего-то не хватает в моей конфигурации? Я проверил документы, Google и SO и не нашел ничего, что могло бы помочь.

Я не понимаю, почему это правило жизненного цикла не очищает мои результаты Athena. Заранее благодарю, если у вас есть идеи!

resource "aws_s3_bucket" "arapbi" {
  bucket = "arapbi"

  tags = {
    Name = "ARAPBI"
  }
}

resource "aws_s3_bucket_lifecycle_configuration" "arapbi" {
  bucket = aws_s3_bucket.arapbi.id

  rule {
    id     = "Lifecycle"
    status = "Enabled"

    filter {
      object_size_greater_than = "0"
      prefix                   = "athena_results/"
    }


    expiration {
      days = 3
    }

    noncurrent_version_expiration {
      noncurrent_days = 1
    }
  }
}

Тебе это object_size_greater_than = "0" там нужно? Я бы проверил без него, посмотрим, будет ли делать то, что должно

Helder Sepulveda 06.04.2024 17:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
315
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы посмотрите на примеры, вам нужно использовать and для фильтрации по нескольким атрибутам. Это описано в Примерах.

resource "aws_s3_bucket_lifecycle_configuration" "arapbi" {
  bucket = aws_s3_bucket.arapbi.id

  rule {
    id     = "Lifecycle"
    status = "Enabled"

    filter {
      and {
        prefix                   = "athena_results/"
        object_size_greater_than = "0"
      }
    }


    expiration {
      days = 3
    }

    noncurrent_version_expiration {
      noncurrent_days = 1
    }
  }
}

Как описано в конфигурации блока filter. Вы должны указать ровно один фильтр

Блок конфигурации фильтра должен быть указан как пустой блок конфигурации (фильтр {}) или ровно один из префикса, тега, и указано object_size_greater_than или object_size_less_than.

Из чтения документации: and- (Optional) Configuration block used to apply a logical AND to two or more predicates. Я предполагаю, что если and не используется, предикаты в блоке фильтра будут применяться с логикой or, и будет удалено больше файлов, чем ожидалось...

Helder Sepulveda 06.04.2024 16:38

Я только что проверил это и получил сообщение об ошибке: api error MalformedXML: The XML you provided was not well-formed or did not validate against our published schema ... terraform успешно применяется без and

Helder Sepulveda 06.04.2024 17:04

Кажется, проблема в том, что object_size_greater_than = "0" если я поменяю 0 на 1, оно будет применено правильно.

Helder Sepulveda 06.04.2024 17:12

Спасибо за вашу помощь в этом. Предложенные вами изменения развертываются через Terraform. Я жду, удалит ли правило жизненного цикла объекты, как ожидалось. Если это так, я обновлю и приму этот ответ.

Evan Volgas 06.04.2024 17:42

Другие вопросы по теме

Проверка правильности команды Terraform Graph конвейера сборки Azure Yaml
Настройки группы безопасности Terraform RDS
Получает ошибку в коде Azure terraform: данный сервер не поддерживает функцию частной конечной точки. пожалуйста, создайте новый сервер с поддержкой частной конечной точки
Пиринг виртуальных сетей и конечные точки служб: как разрешить взаимодействие двух служб приложений Azure
Как создать фильтр terraform для источника данных с подстановочными знаками
EKS — ошибка сервера (запрещено): пространства имен запрещены: пользователь «arn::x/xx» не может перечислить «пространства имен» ресурсов в группе API «» в области кластера
Доступ в Интернет через AWS EC2 без выделенного общедоступного IP-адреса
AWS Terraform aws_cur_report_definition так долго висит
Путаница относительно файла состояния terraform
Как добавить политики для разных API в соответствии с требованиями API