Мы разработали AWS-серверное лямбда-приложение, использующее dotnetcore для выполнения операций над экземплярами EC2, например запуска или остановки экземпляра EC2, и интеграции с Aws API Gateway.
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"
}
}
}
}
}
Приведенная выше лямбда-функция работает нормально для запуска экземпляра ec2 при вызове URL-адреса шлюза API.
Для вызова этих API мы создали приложение Angular 6 и обеспечили аутентификацию с использованием Aws Cognito Userpools.
Таким образом, пользователь Cognito входит на веб-сайт и получает всю информацию EC2.
Если пользователь хочет остановить / запустить экземпляр EC2, он нажмет на конкретную кнопку, которая вызывает соответствующий URL-адрес шлюза API для лямбда-функций, и он работает нормально.
Теперь вопрос в том, кто совершил это действие. После стольких исследований стекового потока и форумов сообщества aws на предмет выяснения, кто запустил или остановил экземпляры EC2, я обнаружил, что Aws CloudTrail регистрирует информацию, когда пользователь запускает или останавливает экземпляр.
Итак, я создал трейл и вижу логи в S3-контейнерах. Но в каждом открытом журнале я видел, что роль «arn: aws: iam :: 2808xxxx1013: role / lamda_start_stop» захвачена. Я знаю, что это из-за лямбда-функции. Но я хочу знать, кто на самом деле остановил дело.
Пожалуйста, посоветуйте, как получить информацию о пользователе!