我们可以从 AWS Lambda 访问所有帐户堆栈及其信息吗?

Can we access all the account stacks and their information from AWS Lambda?

我的另一个问题 ,我们可以从 AWS Lambda 访问所有帐户堆栈及其信息吗?

我被要求编写一个脚本,通过将日志放入 splunk 来验证所有堆栈集是否在其适当的区域中 created/updated。

这是我的方法 - 创建一个简单的 python (AWS Lambda) 脚本来验证所有区域的堆栈集并将其日志信息更新到 splunk(在每次创建或更新堆栈集时)。

  1. 硬编码 python 脚本中的所有帐户 例如。账户 = [535353..., 435..., 645542..., 等等]
  2. 使用 python-trophosphereboto3
  3. 遍历所有帐户及其区域
  4. 并且对于每个区域 运行 一个描述堆栈集或描述事件的查询来验证(在 create/update 脚本有 运行 之后)堆栈集是否有 create/updated.

代码摘录为:

client = boto3.client('cloudformation')
description = client.describe_stack_set()
  1. 解析描述以验证该帐户区域的特定堆栈集的状态
  2. 更新 splunk 日志中所有已解析的描述或(整个描述)。

但我不确定:

如果我不在正确的道路上,请给我建议一个解决方案。

按照你说的方法就可以了。但是,在您的 lambda 中,您必须在调用 describe_stack_set 之前在每个帐户中承担一个角色,以获得正确帐户(可能还有正确区域)的信息。为了自动化,您可能必须自动配置信任 lambda 所在帐户的角色 运行。

实现此目的的另一种方法是在所有账户上分发 Lambda,这样您就可以跳过承担角色部分和账户 ID 的硬编码。

我最喜欢的方法是在每个堆栈中创建自定义资源或计划的 lambda 执行,在 Splunk 中生成日志,稍后可以查询。在 Splunk 中,您可以在一段时间内未显示此特定日志时触发警报。