如何通过AWS Console删除资源后申请或销毁?

问题描述 投票:0回答:1

我有一个模块,里面有作业定义、计算环境、作业队列等各种批处理服务资源。

今天我无法执行 terraform apply 由于更新其中一个与批次相关的资源时出错(不幸的是,我已经丢失了那些最初的错误信息)。

我之前也遇到过类似的事情,通过手动禁用deleting作业队列清除了障碍。所以我又通过AWS控制台做了一次,并运行了以下命令 terraform apply但这次planapply还是没有成功,可能是因为队列中有一个未完成的作业处于可运行但未启动的状态(之前我成功完成的几次作业队列都是空的)。所以我对计算环境做了同样的事情(通过AWS Console进行disableddeleted),现在我得到了这样的消息,有 terraform plan:

2020/04/30 15:15:43 [ERROR] module.batch_data_load: eval: *terraform.EvalRefresh, err: One compute environment is expected, but AWS return no compute environment
2020/04/30 15:15:43 [ERROR] module.batch_data_load: eval: *terraform.EvalSequence, err: One compute environment is expected, but AWS return no compute environment

因此,我似乎通过AWS控制台对Terraform管理的资源进行了胡乱操作,弄砸了我的状态文件。

我如何通过AWS Console删除资源后应用或销毁?

amazon-web-services terraform
1个回答
1
投票

Terraform确实会尝试将自己的状态想法与远程对象重新同步,作为创建计划的一部分,但它并不总是有效,因为有时远程对象以Terraform无法解释的方式进行交互,或者其他原因,Terraform没有足够的信息来完全重新同步。

如果你知道配置中与某个资源实例相关联的远程对象被删除了,你可以告诉Terraform "忘记 "这个对象,并将其从状态中完全删除,使用的是 terraform state rm 命令。

terraform state rm aws_batch_job_queue.example

只有当您确定该物体已不存在,或您打算继续使用其他系统管理现有物体时,才应这样做,因为一旦Terraform忘记了该物体,它将永远不会计划销毁该物体,因此该物体可以永远保持活动状态。

© www.soinside.com 2019 - 2024. All rights reserved.