首页 > 解决方案 > 在 AWS 组织中部署 lambda 函数

问题描述

我创建了一个 AWS lambda 函数来关闭我账户中的 EC2 实例。该函数在特定时间从 CloudWatch 调用。

假设您必须在 AWS 组织中完成相同的任务。您拥有对主账户的完全控制权,并且您是组织的所有者。如果您想在某个时间关闭组织中的所有 EC2 实例,首先可以从您的主账户中控制吗?如果是,那么方法是什么?

  1. Master CloudWatch --calls--> Master Lambda --> 关闭组织中的 EC2 实例

  2. 成员 CloudWatch --> 成员 Lambda --> 关闭其组织中的 EC2。

如果 2. 是唯一的选项,是否可以将 CloudWatch 规则和 Lambda 函数从主账户推送到每个成员账户?

  1. 还有其他方法可以解决这个问题吗?

非常感谢!

标签: amazon-web-servicesamazon-ec2aws-lambdaamazon-cloudwatchaws-organizations

解决方案


选项一可能是两者中更好的一个,因为它更简单一些(无需处理跨账户事件)。

为此,您需要了解AWS Security Token Service 的 Assume Role

这将允许您的 lambda 系统地:

  • 在账户 1 中担任可以列出和关闭 EC2 实例的角色
  • 关闭 EC2 实例
  • 假设帐户 2 中的一个角色……等等。

为此,您必须在每个“从属”账户中承担一个 IAM 角色,以及一个允许sts:AssumeRole在主账户中使用的 IAM 角色来调用该 lambda。

我会挑战你,以确保这是你所需要的。通常,如果您可以让您的账户彼此之间只有非常松散的依赖关系,那么在 AWS 中的生活会容易得多;而是考虑一种方法,每个账户负责根据触发器关闭自己的 EC2 实例。


推荐阅读