有没有办法在AWS账户中核对所有AWS资源?

时间:2017-03-30 01:19:19

标签: amazon-web-services terraform

我有一个AWS账户,其中多个所有者设置了多个EC2实例,负载均衡器,目标组,安全组等。 我们使用terraform来设置它,但有时由于腐败,状态变得不一致。当前要恢复的机制是手动销毁特定所有者拥有的该帐户中的所有资源。 是否有一种简单的方法来核算属于特定所有者的AWS账户中的所有资源?

7 个答案:

答案 0 :(得分:2)

简答:不。

更长的答案:实际上,那也没有。这没有内置的能力。

您所描述的案例不在典型AWS使用范围内......破坏帐户中的所有内容 - 通常 - 应该不容易。

当然,通过将对aws-cli的调用包装到自定义代码来迭代资源并生成其他请求来销毁它们,你可以编写脚本,相当简单,但是如果你这样做的话,锁定该代码,因为这种能力本质上是危险的。

答案 1 :(得分:2)

同意另一个答案,即没有简单的方法删除孤儿资源。

但我发现最初的问题是terraform状态已损坏。 您可以签出terraform import功能,该功能允许您从aws资源生成状态文件。这样,您就可以再次将配置连接到资源。

答案 2 :(得分:1)

无法删除特定用户拥有的帐户中的所有资源,但是可以删除帐户中的所有资源

您可以使用aws-nuke,它是根据您描述的相同用例创建的。

  1. 首先,您需要为帐户设置account alias
  2. 您必须创建一个config file
  3. 然后,您可以使用以下命令列出将要删除的所有资源:

    aws-nuke -c config / nuke-config.yml --profile aws-nuke-example

  4. 添加--no-dry-run选项以永久删除同一命令中的所有资源。

  5. 还有多个可用的过滤器选项,例如 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上取得了一些成功(玩了几分钟;不深入):

https://github.com/gruntwork-io/cloud-nuke

答案 4 :(得分:0)

如果问题是地形状态已损坏,则也许将状态存储在版本为S3的存储桶中将有助于减少其影响。

答案 5 :(得分:0)

使用Terraformer将所有资源导入terraform配置,然后执行您想要的任何操作:

terraformer import aws --resources =“ *”

https://github.com/GoogleCloudPlatform/terraformer

注意状态文件的锁定f.e.通过使用dynamodb并启用s3版本控制。

答案 6 :(得分:0)

我认为没有任何状态转发方法可以执行此操作,但是要检查您的帐户中是否有任何活动资源,请执行以下操作:

  1. 打开“计费和成本管理”控制台。
  2. 在导航窗格中选择帐单。
  3. 您可以在“按服务分类的帐单明细”部分中查看不同服务产生的费用。
  4. 您可以在按帐户的账单明细部分中查看在不同AWS区域产生的费用。

对于每种服务,请确定服务产生费用的地区。 要终止在不同服务下标识的活动资源,请执行以下操作:

  1. 打开AWS管理控制台。
  2. 对于“查找服务”,输入服务名称。
  3. 打开服务控制台后,终止所有活动资源。确保检查分配了资源的每个地区。