如何知道谁使用AWS Serverless应用程序启动或停止了EC2实例



我们开发了一个AWS Serverless Lambda应用程序,使用dotnetcore在EC2实例上执行操作,例如启动或停止EC2实例,并与AWS API网关集成。

serverless.template在dotnetcore应用程序中

"StartInstanceById" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"Handler": "EC2_Monitoring_Serverless::EC2_Monitoring_Serverless.Functions::StartInstanceById",
"Runtime": "dotnetcore2.1",
"CodeUri": "",
"MemorySize": 256,
"Timeout": 30,
"Role": "arn:aws:iam::2808xxxx1013:role/lamda_start_stop",
"Policies": [ "AWSLambdaBasicExecutionRole" ],
"Events": {
"PutResource": {
"Type": "Api",
"Properties": {
"Path": "/instances",
"Method": "Get"
}
}
}
}
}

当我调用API网关url时,上面的Lambda函数可以很好地启动ec2实例。

为了调用这些API,我们创建了Angular 6应用程序,并使用Aws Cognito用户池提供了身份验证。所以cognito用户登录到网站并获得所有EC2信息。

如果用户想要停止/启动EC2实例,则用户将单击特定按钮,该按钮将调用lambda函数的相关api网关url,并且工作正常。

现在的问题是谁做了那个动作。在对stackoverflow和aws社区论坛进行了大量研究,以了解谁启动或停止了EC2实例后,我发现aws CloudTrail会在用户启动或停止实例时记录信息。

所以我创建了一个跟踪,我可以看到S3存储桶中的日志。但在我打开的每个日志中,我都看到角色"arn:aws:iam::2808xxxx1013:role/lamda_start_stop"被捕获。我知道这是因为Lambda函数。但我想知道是谁真正阻止了这个例子。

请建议如何获取用户详细信息!

lambda执行角色在cloudtrail中打印的原因是它启动了停止ec2实例的进程。此处假定角色(而不是实际用户(。

要打印实际用户,您需要在lambda上实现日志,它将把日志打印到Cloudwatch。您可以从这些日志中获取实际用户或任何其他自定义信息。

最新更新