将 CloudTrail 事件获取到 Lambda 函数

Getting CloudTrail event to a Lambda function

有没有办法将事件信息(特别是导致事件的服务的 ARN)获取到 lambda 函数?

在我之前的 中,我寻求了一些有关使用 Cloudwatch 和 Cloudtrail 获取信息的帮助。我认为这主要是对规则的误解,但现在我担心是否有一个通用的解决方案。

我知道我可以成功地针对特定服务执行此操作,但我希望有一个通用规则来触发该功能。 Cloudwatch 日志或事件似乎是对此的正确答案,但由于我的 Cloudwatch Cloudtrail 规则出现问题,我对此不再有信心。

为了全面阐述我的目标,我希望在创建任何服务时触发 lambda 函数并访问该新服务的 ARN,以便我可以对流程进行验证。

是的,这是可能的,但是,每个事件都有不同的事件属性,您需要检查从何处获取此信息。

例如,如果您的 lambda 由 CloudFormation 触发,您可以使用 event['StackId'].

获取 Stack Id (ARN)
{
  "StackId": stackidarn,
  "ResponseURL": "http://pre-signed-S3-url-for-response",
  "ResourceProperties": {
    "StackName": "stack-name",
    "List": [
      "1",
      "2",
      "3"
    ]
  },
  "RequestType": "Create",
  "ResourceType": "Custom::TestResource",
  "RequestId": "unique id for this create request",
  "LogicalResourceId": "MyTestResource"
}

您可以查看 http://docs.aws.amazon.com/lambda/latest/dg/eventsources.html 中生成的每个事件的详细信息。

如果你想实时调试检查事件内容,你可以找到一些解决方案,比如lambda-toolkit