【问题标题】:Pulling AWS accountID from CloudTrail to use in Lambda function从 CloudTrail 中提取 AWS accountID 以在 Lambda 函数中使用
【发布时间】:2020-10-31 15:26:36
【问题描述】:

我正在努力从组织内新创建的 AWS 账户中提取 accountID。我正在使用 CloudWatch 规则来触发 CreateAccountResult 事件名称的 lambda 函数。在这次活动中,它给了我"SUCCEEDED"createAccountStatus 以及新帐户的accountID

我希望能够仅提取 accountID 并将其插入到我的 lambda 函数中的变量中。

此 lambda 函数用于创建 AWS 连接器以将账户链接到趋势科技。本质上,我在这个脚本中使用的是:

account = '**accountID**'

payload = "{\n   \"crossAccountRoleArn\": \"arn:aws:iam" + account + ":role/TrendMicroDSM\",\n   \"workspacesEnabled\": true\n}"

我希望帐户变量自动更新为最新帐户的accountID

这可能吗?

【问题讨论】:

  • 抱歉,您的问题令人困惑。您是在问如何从create_account() 的响应中获取数据?
  • 我想我在技术上问了 2 个问题。首先,如何创建一个在创建触发 lambda 函数的新帐户(我可能已经完成此操作)时触发的 cloudwatch 规则?其次,如何从该新帐户中提取 accountID 以填充到我的 lambda 函数中以将帐户链接到趋势?

标签: amazon-web-services aws-lambda amazon-cloudwatch amazon-cloudtrail deepsecurity


【解决方案1】:

如果您使用的是 Python,create_account() 函数会返回:

{
    'CreateAccountStatus': {
        'Id': 'string',
        'AccountName': 'string',
        'State': 'IN_PROGRESS'|'SUCCEEDED'|'FAILED',
        'RequestedTimestamp': datetime(2015, 1, 1),
        'CompletedTimestamp': datetime(2015, 1, 1),
        'AccountId': 'string',
        'GovCloudAccountId': 'string',
        'FailureReason': 'ACCOUNT_LIMIT_EXCEEDED'|'EMAIL_ALREADY_EXISTS'|'INVALID_ADDRESS'|'INVALID_EMAIL'|'CONCURRENT_ACCOUNT_MODIFICATION'|'INTERNAL_FAILURE'|'GOVCLOUD_ACCOUNT_ALREADY_EXISTS'
    }
}

因此,您可以简单地使用:

import boto3

client = boto3.client('organizations')

response = client.create_account(...)

account_id = response['CreateAccountStatus']['AccountId']

【讨论】:

  • 这是我要添加到我的 lambda 函数中作为填充 accountID 的变量集吗?或者这是创建一个帐户然后提取请求的信息? Python对我来说很新,我习惯了PowerShell,所以我很抱歉
  • 您的问题没有提到编程语言。如果您已经编写了代码来接收帐户创建信息,请编辑您的问题以包含该代码,并说明您正在尝试做什么以及您面临的确切问题。
  • 语言是pyhton。我还没有编写代码来接收信息,但是我有将帐户链接到用 python 编写的趋势的代码,我在我的帖子中放了一个示例。您提供的代码,我假设将从触发 lambda 函数的 cloudtrail 事件中提取帐户 ID 信息?所以我可以在我的 lambda 函数的开头添加它,并使用 account_id = response['CreateAccountStatus']['AccountId'] 作为变量,将来自 cloudtrail 事件的帐户 ID 添加到 lambda 函数中?
  • 啊!不,上面的代码将创建帐户。如果您收到来自 CloudTrail 的消息,请编辑您的问题以显示所提供数据的格式。它将到达 Lambda 函数内的 event 记录中。
  • 对于您提供的脚本,是否每次都会通过每个帐户?您将如何挑选新帐户以仅获取该信息?
猜你喜欢
  • 1970-01-01
  • 2019-05-20
  • 2019-01-22
  • 2017-06-04
  • 2020-03-21
  • 1970-01-01
  • 2023-03-18
  • 2018-01-24
  • 2018-01-29
相关资源
最近更新 更多