amazon-web-services - 通过 HTTP 请求执行 AWS Cloud Watch API
问题描述
我目前正在尝试执行AWS 云手表 API并从云手表环境中获取日志。我已经通过使用 AWS 提供的 SDK 成功实现了这一点。同样在他们提到的文档中,我们还可以使用 HTTP 请求从云手表获取日志。在以下文档中,他们提到了我们必须从请求中传递的参数。
https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_FilterLogEvents.html。
问题是还有一些常见的参数要从请求中发送。我需要澄清我们要发送它们的方式。作为查询参数、路径参数或请求标头?
解决方案
Cloud Watch Rest API的请求参数应以 JSON 格式在 中发送{}
,类似于给出的 POST 示例中的方式。其中只有这些logGroupName
是必需的,而提到的其他参数是可选的:
**
endTime
filterPattern
interleaved
limit
logGroupName
logStreamNamePrefix
logStreamNames
nextToken
startTime
**
在整个 HTTP 请求的上下文中:
POST / HTTP/1.1
Host: logs.<region>.<domain>
X-Amz-Date: <DATE>
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=<Signature>
User-Agent: <UserAgentString>
Accept: application/json
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive
X-Amz-Target: Logs_20140328.FilterLogEvents
{
"endTime": number,
"filterPattern": "mystring",
"interleaved": boolean,
"limit": number,
"logGroupName": "string",
"logStreamNamePrefix": "string",
"logStreamNames": [ "string" ],
"nextToken": "string",
"startTime": number
}
如上例所示,通用参数作为 HTTP 参数发送。此处需要它们来使用正确的身份验证签署您对 AWS 的请求。(使用 CLI 时,身份验证会在后台自动进行) 这是有关如何为 AWS API 构建规范、签名的 HTTP 请求的官方演练
例如:
Action=ListUsers&
Version=2010-05-08&
X-Amz-Algorithm=AWS4-HMAC-SHA256&
X-Amz-Credential=AKIDEXAMPLE%2F20150830%2Fus-east-1%2Fiam%2Faws4_request&
X-Amz-Date=20150830T123600Z&
X-Amz-SignedHeaders=content-type%3Bhost%3Bx-amz-date
推荐阅读
- python - 选定列上的 DataFrame.values
- javascript - vuetify 表页面不起作用并重置回 1
- flutter - 有什么方法可以从 Flutter 中的 DocumentSnapshot 获取 DocumentReference?
- java - 有没有另一种方法可以在 android 日历选择器中添加天数
- python - 为什么当我评论启用 stdscr.nodelay() 的行时没有任何变化?
- swift - macOS 应用程序中使用 Wkwebview 的 Facebook 手动登录流程失败
- wix - 目录规范中使用的 WiX 定义
- scala - 如何使用 Spark-Scala 解析 JSON 数据
- sql - DAL01013:无法连接到服务器
- python - 如何将色彩平衡从一张图像应用到另一张图像