Как узнать, кто запустил или остановил экземпляр EC2 с помощью приложения AWS Serverless - PullRequest
0 голосов
/ 13 ноября 2018

Мы разработали 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» захвачена. Я знаю, что это из-за лямбда-функции. Но я хочу знать, кто на самом деле остановил дело.

Пожалуйста, посоветуйте, как получить информацию о пользователе!

1 Ответ

0 голосов
/ 13 ноября 2018

Причина, по которой роль выполнения лямбды печатается в cloudtrail, заключается в том, что она инициировала процесс для остановки экземпляра ec2.Здесь предполагается роль (вместо фактического пользователя).

Чтобы напечатать своего действительного пользователя, вам нужно внедрить журналы на вашей лямбде, которая будет печатать журналы до Cloudwatch.Вы можете получить фактического пользователя или любую другую пользовательскую информацию из этих журналов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...