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

标签 python lambda aws-cloudformation

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

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

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

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

代码摘录如下:

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

    • 如果我能够从某个位置访问所有帐户及其区域 lambda 脚本。
    • 这种方法正确与否

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

    最佳答案

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

    实现此目的的另一种方法是将 Lambda 分发到所有帐户,这样您就可以跳过假设角色部分和帐户 ID 的硬编码。

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

    关于python - 我们可以从 AWS Lambda 访问所有账户堆栈及其信息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48617759/

    相关文章:

    python - 使用 Python 识别监听端口

    amazon-web-services - AWS 云形成 cfn-init 错误

    amazon-web-services - CloudFront 分发是否需要多区域副本?

    amazon-web-services - 使用 CloudFormation 获取 LB 的 DNS

    python - 从 numpy 类型获取位数的简单方法?

    python - save(commit=False) 抛出验证错误

    lambda - Java 8 - 查找数组中的领导者

    c# - 如何对以下列表进行排序

    python - 数据框 set_index 未设置

    Java 8 Lambda Sort With Variable 方法引用