Amazon web services 通过AWS控制台删除资源后如何应用或销毁?

Amazon web services 通过AWS控制台删除资源后如何应用或销毁?,amazon-web-services,terraform,Amazon Web Services,Terraform,我有一个包含各种批处理服务资源的模块,如作业定义、计算环境和作业队列 今天我无法执行terraform apply,因为更新这些批处理相关资源时出错(不幸的是,我丢失了这些初始错误消息) 我以前遇到过类似的情况,并通过手动禁用/删除作业队列来清除障碍。因此,我再次通过AWS控制台执行此操作,并运行了terraform apply,但是这次计划/应用仍然不起作用,可能是因为队列中有一个未完成的作业处于可运行但未启动的状态(以前我成功执行此操作时,作业队列为空)。因此,我对计算环境做了同样的事情(通

我有一个包含各种批处理服务资源的模块,如作业定义、计算环境和作业队列

今天我无法执行
terraform apply
,因为更新这些批处理相关资源时出错(不幸的是,我丢失了这些初始错误消息)

我以前遇到过类似的情况,并通过手动禁用/删除作业队列来清除障碍。因此,我再次通过AWS控制台执行此操作,并运行了
terraform apply
,但是这次计划/应用仍然不起作用,可能是因为队列中有一个未完成的作业处于可运行但未启动的状态(以前我成功执行此操作时,作业队列为空)。因此,我对计算环境做了同样的事情(通过AWS控制台禁用/删除),现在我通过
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控制台删除资源后,如何应用或销毁资源?

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

如果您知道与配置中特定资源实例关联的远程对象已被删除,您可以告诉Terraform“忘记”该对象,并使用
Terraform state rm
命令将其从状态中删除:

terraform state rm aws_batch_job_queue.example

只有在确定对象已不存在,或者打算继续使用其他系统管理现有对象时,才应执行此操作,因为一旦Terraform忘记了对象,它将永远不会计划销毁它,因此对象可以永远保持活动状态。

错误中的完整资源名称空间是
模块。批处理数据加载
?可能
Terraform refresh
是的,这是包含各种
aws\u iam\u角色的模块名称
aws\u iam\u role\u policy\u attachment
aws\u security\u group
aws\u batch\u compute\u environment
aws\u batch\u job\u queue
aws\u batch\u job\u definition
参考资料。
terraform refresh
给出了同样的错误(无论如何感谢您的建议!)感谢这一有用的见解,Martin。