Я пытаюсь уничтожить некоторые ресурсы, созданные терраформом на AWS.
Terraform предлагает этот план
Terraform will perform the following actions:
- aws_lambda_function.myproject-mainprocess-restore-db-from-snapshot
- module.myproject-mainprocess.aws_db_event_subscription.send_rds_event_to_sns
- module.myproject-mainprocess.aws_lambda_permission.allow_sns_call_rds_lambda
- module.myproject-mainprocess.aws_sns_topic_subscription.call_lambda_by_sns
- module.myproject-mainprocess.module.lambda.aws_iam_policy.lambda_policy
- module.myproject-mainprocess.module.lambda.aws_iam_policy.lambda_policy_logs
- module.myproject-mainprocess.module.lambda.aws_iam_role.lambda_role
- module.myproject-mainprocess.module.lambda.aws_iam_role_policy_attachment.policy_attachment
- module.myproject-mainprocess.module.lambda.aws_iam_role_policy_attachment.policy_attachment_logs
- module.myproject-mainprocess.module.lambda.aws_lambda_function.lambda
- module.myproject-mainprocess.module.lambda.datadog_monitor.lambda_errors_alert
- module.myproject-mainprocess.module.rds_event_sns.aws_sns_topic.topic_simple
Однако из-за того, что в моем профиле aws нет разрешения на удаление, один из шагов не удался:
- module.myproject-mainprocess.aws_db_event_subscription.send_rds_event_to_sns
Error: Error applying plan:
1 error(s) occurred:
* module.media-rotate-reports-db.aws_db_event_subscription.send_rds_event_to_sns (destroy): 1 error(s) occurred:
* aws_db_event_subscription.send_rds_event_to_sns: Error deleting RDS Event Subscription dev-media-rotate-reports-db-rds-snapshot-creation-event-subscription: AccessDenied: User: arn:aws:sts::141225792464:assumed-role/myteam/anthony_dev_credentials is not authorized to perform: rds:DeleteEventSubscription on resource: arn:aws:rds:us-east-1:141225792464:es:dev-myproject-mainprocess-rds-snapshot-creation-event-subscription
status code: 403, request id: a20c2dbf-8526-4a8f-9d86-71f2df4507c5
Я удалил вышеуказанное aws_db_event_subscription
вручную, используя альтернативную роль AWS. Однако я не могу возобновить терраформирование и игнорировать эту ошибку.
Terraform по-прежнему необходимо выполнить следующее:
Terraform will perform the following actions:
- module.myproject-mainprocess.aws_db_event_subscription.send_rds_event_to_sns
- module.myproject-mainprocess.module.rds_event_sns.aws_sns_topic.topic_simple
Как я могу сказать Terraform продолжить и игнорировать module.myproject-mainprocess.aws_db_event_subscription.send_rds_event_to_sns
что уже удалено?
Сделайте резервную копию вашего tfstate
сначала и используйте rm команда для удаления ресурса из tfstate
. Используйте это так:
terraform state rm module.myproject-mainprocess.aws_db_event_subscription.send_rds_event_to_sns
terraform state rm module.myproject-mainprocess.module.rds_event_sns.aws_sns_topic.topic_simple
редактировать Только что прочитал
Эта команда выведет резервную копию состояния до сохранения любых изменений. Резервное копирование нельзя отключить. Из-за разрушительного характера этой команды требуется резервное копирование.
Я бы по-прежнему рекомендовал делать резервное копирование вручную, а также восстановление после поломки tfstate или восстановление tfstate - это трудоемкая и рискованная операция, которую я бы хотел избежать любой ценой.