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

时间:2018-02-05 07:37:29

标签: python lambda amazon-cloudformation

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

我被要求编写一个脚本来验证所有堆栈集是否已通过将其日志放入splunk中而在相应的区域中创建/更新。

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

  1. 对python脚本中的所有帐户进行硬编码 例如。 accounts = [535353 ...,435 ...,645542 ......等]
  2. 使用python-trophosphereboto3
  3. 对所有帐户及其区域进行迭代
  4. 对于每个区域运行一个查询来描述堆栈集或描述要验证的事件(在创建/更新脚本运行之后)堆栈集是否已创建/更新。
  5. 代码摘录将是:

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

      • 如果我能够从a访问所有帐户及其区域 lambda脚本。
      • 方法是对还是

      如果我没有走上正确的道路,建议我一个解决方案。

1 个答案:

答案 0 :(得分:1)

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

实现此目的的另一种方法是在所有帐户上分发Lambda,以便跳过假设角色部分和帐户ID的硬编码。

我最喜欢这样做的方法是在每个堆栈中创建一个自定义资源或一个预定的lambda执行,这些堆栈在Splunk中生成一个可以在以后查询的日志。在Splunk中,当特定日志出现一段时间后,您可以触发警报。