【问题标题】:Executing AWS Cloud Watch APIs through HTTP requests通过 HTTP 请求执行 AWS Cloud Watch API
【发布时间】:2020-06-07 17:44:10
【问题描述】:

我目前正在尝试执行 AWS 云监视 API 并从云监视环境中获取日志。我已经通过使用 AWS 提供的 SDK 成功实现了这一点。同样在他们提到的文档中,我们还可以使用 HTTP 请求从云手表获取日志。在以下文档中,他们提到了我们必须从请求中传递的参数。

https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_FilterLogEvents.html.

问题是请求中还有一些常见的参数要发送。我需要澄清我们想要发送它们的方式。作为查询参数、路径参数或请求标头?

【问题讨论】:

    标签: amazon-web-services amazon-cloudwatchlogs


    【解决方案1】:

    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 时,身份验证会在后台自动进行) This is an official walkthrough of how to construct a canonical,signed HTTP request for AWS APIs

    例如:

    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
    

    【讨论】:

    • 还有一些参数叫做common params。我们不需要通过请求发送它们吗?这与上述评论有关。包含日志详细信息的有效负载应作为 JSON 有效负载发送。其他参数呢?参数“主机”到参数“X-Amz-Target”。所有这些参数都应该通过 header 发送吗?
    • 常用参数用于身份验证等(见上文)。需要主机标头来指定区域和域
    • 我目前正在尝试使用 Postman。它有一个名为“AWS 签名”的身份验证标头。出于测试目的,我们可以通过添加 AccessKey 和 SecretKey 来使用它,对吗?还是我们需要通过签名来执行HTTP请求的整个过程?
    • 您绝对可以使用 Postman 进行测试。这是一个例子:docs.aws.amazon.com/apigateway/latest/developerguide/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2017-04-24
    • 2012-07-16
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多