情况
我们有一个用于尝试的 AWS 沙盒账户。它不用于生产,纯粹是为了玩 AWS 提供的所有玩具。我们希望鼓励每个人探索和学习。
我们的资产中有许多 AWS 账户,包括但不限于:
- 沙箱
- 发展
- 测试
- 生产
财务和环境责任对我们来说很重要。
要求
潜在解决方案
aws-nuke
我见过aws-nuke。如果我们在周三和周日的午夜运行此程序,它将终止所有实例。这听起来像是一个很棒的解决方案,但它也有点危险,因为它可能会因我的错误而终止其他帐户上的实例。它目前还适用于阻止核弹列表,而不是明确的允许核弹列表,这是另一个潜在的安全问题。我已经登录AWS-Nuke#751来解决这个问题。
最大正常运行时间策略
我正在研究的另一种方法是使用策略(IAM?)来设置所有东西的最大正常运行时间。我觉得这种方法不太可能泄露到我们的其他账户中,而且可能更加细致入微。我不确定,
- 如何最好地实现这一点
- 它是否需要在 lambda 中运行,或者只是一种策略
- 是否是实际上比在整个庄园运行 aws-nuke 更安全。
如有任何指点,我将不胜感激。
答案1
在以前的一个雇主那里,有人编写了一个 Lambda 函数来列出所有正在运行的实例,如果它们没有特定的标签,则每晚 7 点停止它们。这是一种非常简单、有效的处理方法。python 库boto3
非常易于使用。
lambda 部署在组织中并使用跨账户角色,但您也可以轻松地通过 StackSet 将其部署到所有组织账户中,并使其仅针对该账户实例。