Terraform AWS Поставщик: SecretsManager не может быть применен, так как версия была удалена - PullRequest
0 голосов
/ 13 февраля 2020

У нас есть AWS SecretsManager Secret, который был создан один раз. Этот секрет будет обновляться внешней работой каждый час. У меня проблема в том, что иногда terraform plan / apply терпит неудачу со следующим сообщением:

AWS Поставщик 2.48

    Error: Error refreshing state: 1 error occurred:

        * module.xxx.xxx: 1 error occurred:

        * module.xxx.aws_secretsmanager_secret_version.xxx: 
    aws_secretsmanager_secret_version.xxx: error reading Secrets Manager Secret Version: InvalidRequestException: You can't perform this operation on secret version 68AEABC3-34BE-4723-8BF5-469A44F9B1D9 because it was deleted.

Мы попробовали два решения: 1) Принудительное удаление всего secret через aws cli, но это побочный эффект, что один из наших зависимых ресурсов также будет воссоздан (определение шаблона ecs зависит от этого секрета). Это работает, но мы не хотим побочный эффект от воссоздания экса. 2) Вручную отредактируйте внутренний файл .tfstate и установите текущую AWS секретную версию. Затем запустите план снова.

Оба решения кажутся в некотором роде хакерскими. Как лучше всего решить эту проблему?

1 Ответ

0 голосов
/ 13 февраля 2020

Вы можете использовать terraform import для согласования разницы состояний перед запуском plan или apply.

В вашем случае это будет выглядеть так:

terraform import module.xxx.aws_secretsmanager_secret_version.xxx arn:aws:secretsmanager:some_region:some_account_id:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx
...