Применяет ли Terraform жизненный цикл для ignore_change для события корзины S3 типа SQS? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть несколько событий SQS в уведомлении корзины S3. Когда я запускаю операцию из Terraform, эти события SQS теряются, поскольку они не являются частью файла состояния. Я не могу использовать cli для импорта событий, так как terraform будет запускаться несколько раз, и не рекомендуется импортировать все события каждый раз после завершения выполнения terraform.

Я создаю событие S3 из terraform и наличие жизненного цикла для игнорирования типа SQS:

resource "aws_s3_bucket_notification" "lambda_notification" {
bucket = "bucket1"

lambda_function {
  lambda_function_arn = "function_arn"
events              = ["s3:ObjectCreated:*"]
  filter_prefix       = "staging/inbound/Source_Contact/"
  }
 lifecycle {
  ignore_changes = [
    "SQS"
  ]
}
  }

Я хочу знать, можно ли использовать жизненный цикл для сохранения события SQS

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

событий SQS для Lambda потребляются при доставке, если они не завершаются сбоем и у вас есть очередь недоставленных сообщений (DLQ) для их сбора.

жизненный цикл ignore_changes не будет эффективен для вашего использования независимо от того, что вы его установили. Это не влияет на контент в сервисах, это влияет на то, как Terraform развертывает ресурсы при обнаружении изменений ресурсов по сравнению с источником вашего модуля:

ignore_changes (список имен атрибутов) - по умолчанию Terraform обнаруживает любые разница в текущих настройках реального объекта инфраструктуры и планы по обновлению удаленного объекта для соответствия конфигурации.

В некоторых редких случаях настройки удаленного объекта изменяются процессами вне Terraform, которые Terraform затем попытается «исправить» при следующем запуске. Чтобы Terraform разделяла обязанности по управлению одним объектом с отдельным процессом, мета-аргумент ignore_changes указывает атрибуты ресурсов, которые Terraform должен игнорировать при планировании обновлений связанного удаленного объекта.

0 голосов
/ 17 июня 2020

Я пробовал следующее, и мне удалось сохранить события SQS, созданные из tfe, и создать лямбда-события из tfe.

resource "aws_s3_bucket_notification" "lambda_notification" {
  bucket = "bucket1"

  lambda_function {
    lambda_function_arn = "function_arn"
  events              = ["s3:ObjectCreated:*"]
    filter_prefix       = "staging/inbound/Source_Contact/"
    }
 lifecycle {
    ignore_changes = [
      "queue."
    ]
  }
}
...