
Итак, у меня возникли проблемы с настройкой событий Cloudwatch для запуска функции Lambda. В текущем сценарии я хочу запускать Lambda, когда кто-то/что-то меняетсячто-либов ИАМ.
В настоящее время у меня есть глобальный Cloudtrail в Северной Вирджинии, который регистрирует все события IAM, и я могу видеть их очень четко.
Затем у меня есть событие Cloudwatch с триггером, настроенным на Lambda. При тестировании триггера на любой другой службе, например EC2, лямбда срабатывает правильно. Однако при использовании IAM это будетвсегданеудача.
Вот шаблон событий, который я использую, и, похоже, это единственное, что может быть неверным на данном этапе:
{
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"iam.amazonaws.com"
]
}
}
Если кто-то уже пытался это настроить, помогите, пожалуйста. Это меня сводит с ума.
решение1
Для мониторинга изменений в IAM вам понадобится использовать комбинацию CloudWatch, CloudWatch Logs и CloudTrail. Убедитесь, что CloudTrail включен для каждого региона, который вы хотите отслеживать.
CloudTrail будет записывать вызовы IAM и сохранять их в журналах CloudTrail. CloudTrail будет публиковать события в журналах CloudWatch. Вы настраиваете фильтр в CloudWatch для генерации метрик CloudWatch из событий CloudTrail. Эти метрики используются для срабатывания оповещений.
Ваш фильтр CloudWach выглядит так:
{ ($.eventSource = "iam.amazonaws.com") }
Эта статья поможет вам понять процесс. Пошагово со скриншотами.
решение2
Итак, я выяснил, в чем проблема, шаблоны, которые я пытался использовать, либо не обеспечивали малую, либо достаточно большую область действия. Мониторинг IAM таким образом требует соблюденияэтотруководство и когда оно сообщает вам шаблон событий для ввода в качестве шаблона событий Cloudwatch, вам необходимо указать ТОЧНО те имена событий, которые вам требуются.
Он довольно длинный, но демонстрирует, насколько тщательным вам нужно быть, и что подстановка не поддерживается. Вот шаблон, который у меня получился в итоге:
{
"source": [
"aws.iam"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"iam.amazonaws.com"
],
"eventName": [
"AddClientIDToOpenIDConnectProvider",
"AddRoleToInstanceProfile",
"AddUserToGroup",
"ChangePassword",
"CreateAccessKey",
"CreateAccountAlias",
"CreateInstanceProfile",
"CreateLoginProfile",
"CreateOpenIDConnectProvider",
"CreateRole",
"CreateSAMLProvider",
"CreateServiceLinkedRole",
"CreateServiceSpecificCredential",
"CreateUser",
"CreateVirtualMFADevice",
"DeactivateMFADevice",
"DeleteVirtualMFADevice",
"EnableMFADevice",
"ResyncMFADevice",
"UpdateAccessKey",
"UpdateAccountPasswordPolicy",
"UpdateGroup",
"UpdateLoginProfile",
"UpdateOpenIDConnectProviderThumbprint",
"UpdateRoleDescription",
"UpdateSAMLProvider",
"UpdateServerCertificate",
"UpdateServiceSpecificCredential",
"UpdateSigningCertificate",
"UpdateSSHPublicKey",
"UpdateUser",
"UploadServerCertificate",
"UploadSigningCertificate",
"UploadSSHPublicKey",
"AttachGroupPolicy",
"AttachRolePolicy",
"AttachUserPolicy",
"CreatePolicy",
"CreatePolicyVersion",
"DeleteAccountPasswordPolicy",
"DeleteGroupPolicy",
"DeletePolicy",
"DeletePolicyVersion",
"DeleteRolePolicy",
"DeleteUserPolicy",
"DetachGroupPolicy",
"DetachRolePolicy",
"DetachUserPolicy",
"PutGroupPolicy",
"PutRolePolicy",
"PutUserPolicy",
"SetDefaultPolicyVersion",
"UpdateAssumeRolePolicy"
]
}
}