0

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

在我以前的question,我问了一些帮助,使用的CloudWatch和Cloudtrail来获得信息。我认为这主要是对规则的一种误解,但现在我担心是否有无法制定一个通用的解决方案。

我知道我可以为特定的服务做的成功,但我希望有一个通用的规则触发功能。 Cloudwatch日志或事件似乎是正确的答案,但我对Cloudwatch Cloudtrail规则的麻烦不再有信心。

只是为了充分奠定了我的目标,我希望有在创建任何服务的lambda函数触发并访问新的服务ARN,这样我可以做的过程中验证。

回答

1

是的,这是可能的,但是,每个事件都有不同的事件属性,你需要检查哪里得到这些信息。

例如,如果您的lambda是由CloudFormation触发的,则可以使用event['StackId']获得栈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

+0

烨一些解决方案,我刚问过AWS有在看一些细节,似乎,像你说的JSON格式,特别是存储ARN的地方,事件之间的格式不一样。同样在事件版本之间,所以这种方法似乎不适合我的预期目的。 – user3651225