AWS CloudTrail 查找事件 API

AWS CloudTrail Lookup Events API

我正在尝试通过 Postman 作为用户代理来使用 LookupEvents API。 当我将 Body 中的过滤器设置为原始 Json 时,我仍然得到所有日志而不是一个。任何想法如何做到这一点? 方法:Post Content-type: application/json 或者 Content-type: application/x-amz-json-1.0 我也试过原始 body 到 text/json.

{
    "LookupAttributes": [ 
      { 
         "AttributeKey": "EventName",
         "AttributeValue": "ConsoleLogin"
      }
    ],
    "MaxResults": 1
}

多么糟糕的记录 API!我最终得到了这个工作,但步骤并不容易找到。

确保您的要求:

  • 方法是POST.
  • 没有查询字符串参数
  • 包括 Content-Typeapplication/x-amz-json-1.1 个。
  • 包含一个 x-amz-target header,值为 com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101.LookupEvents

"Common Parameters" documentation 有点误导,因为它似乎暗示 Action 属于查询字符串。它没有。

实际上,在查询字符串中包含 Action 似乎可以带回带有任何 EventName 的事件,并且不限制结果的数量。就好像整个请求 body 都被忽略了。


cURL 命令,删除了 AWS 签名内容:

curl --location --request POST 'https://cloudtrail.us-east-1.amazonaws.com' \
--header 'Content-Type: application/x-amz-json-1.1' \
--header 'Accept: application/json' \
--header 'x-amz-target: com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101.LookupEvents' \
--data-raw '{
    "LookupAttributes": [ 
      { 
         "AttributeKey": "EventName",
         "AttributeValue": "ConsoleLogin"
      }
    ],
    "MaxResults": 2
}'

我找不到任何地方记录的 x-amz-target。为了获取该值,我设置了 mitmproxy 并查看了 CLI 命令生成的调用。