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。