
Cloudwatchイベントを設定してLambda関数をトリガーするのに問題があります。現在のシナリオでは、誰か/何かが変更されたときにLambdaをトリガーしたいと考えています。何でもIAM で。
現在、私はバージニア州北部にグローバル Cloudtrail を設置しており、すべての IAM イベントをログに記録しており、非常に明確に確認できます。
次に、CloudwatchイベントのトリガーをLambdaに設定しました。他のサービス、たとえばEC2でトリガーをテストすると、Lambdaは正しくトリガーされます。しかし、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 でフィルターを設定して、CloudTrail イベントから CloudWatch メトリックを生成します。これらのメトリックはアラームをトリガーするために使用されます。
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"
]
}
}