我有一个AWS账户,其中多个所有者设置了多个EC2实例,负载均衡器,目标组,安全组等。 我们使用terraform来设置它,但有时由于腐败,状态变得不一致。当前要恢复的机制是手动销毁特定所有者拥有的该帐户中的所有资源。 是否有一种简单的方法来核算属于特定所有者的AWS账户中的所有资源?
答案 0 :(得分:2)
简答:不。
更长的答案:实际上,那也没有。这没有内置的能力。
您所描述的案例不在典型AWS使用范围内......破坏帐户中的所有内容 - 通常 - 应该不容易。
当然,通过将对aws-cli的调用包装到自定义代码来迭代资源并生成其他请求来销毁它们,你可以编写脚本,相当简单,但是如果你这样做的话,锁定该代码,因为这种能力本质上是危险的。
答案 1 :(得分:2)
同意另一个答案,即没有简单的方法删除孤儿资源。
但我发现最初的问题是terraform状态已损坏。 您可以签出terraform import功能,该功能允许您从aws资源生成状态文件。这样,您就可以再次将配置连接到资源。
答案 2 :(得分:1)
无法删除特定用户拥有的帐户中的所有资源,但是可以删除帐户中的所有资源。
您可以使用aws-nuke,它是根据您描述的相同用例创建的。
然后,您可以使用以下命令列出将要删除的所有资源:
aws-nuke -c config / nuke-config.yml --profile aws-nuke-example
添加--no-dry-run选项以永久删除同一命令中的所有资源。
还有多个可用的过滤器选项,例如 target ,资源类型,排除等,您可以利用这些选项满足您的需求。
答案 3 :(得分:0)
您可以删除自己创建的所有资源,这需要自动化,请在此处查看示例:
https://github.com/jouellnyc/AWS/tree/master/create_aws_vpc2
https://github.com/jouellnyc/AWS/blob/master/create_aws_vpc2/delete_lb_and_vpc.sh
我在Cloud Nuke上取得了一些成功(玩了几分钟;不深入):
答案 4 :(得分:0)
如果问题是地形状态已损坏,则也许将状态存储在版本为S3的存储桶中将有助于减少其影响。
答案 5 :(得分:0)
使用Terraformer将所有资源导入terraform配置,然后执行您想要的任何操作:
terraformer import aws --resources =“ *”
https://github.com/GoogleCloudPlatform/terraformer
注意状态文件的锁定f.e.通过使用dynamodb并启用s3版本控制。
答案 6 :(得分:0)
我认为没有任何状态转发方法可以执行此操作,但是要检查您的帐户中是否有任何活动资源,请执行以下操作:
对于每种服务,请确定服务产生费用的地区。 要终止在不同服务下标识的活动资源,请执行以下操作: