Какой плохо документированный API! В конце концов мне это удалось, но найти шаги было нелегко.
Убедитесь, что ваш запрос:
- Метод
POST
. - Не имеет параметры строки запроса
- Включает
Content-Type
из application/x-amz-json-1.1
. - Содержит заголовок
x-amz-target
со значением com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101.LookupEvents
.
" Общие параметры "документация немного вводит в заблуждение, так как кажется, что Action
принадлежит строке запроса. Это не так.
На практике наличие Action
в строке запроса, похоже, возвращает события с любым EventName
и не ограничивает количество результатов. Это как если бы все тело запроса игнорировалось.
команда 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.