okigan / awscurl

curl-like access to AWS resources with AWS Signature Version 4 request signing.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fail to add filters in API Prometheus query via awscurl in python script

lyrecoSquared opened this issue · comments

I am trying to query an Amazon Managed Service for Prometheus endpoint to extract some metrics data via a python script using the make_request method in the following way (cleary this is an example snippet):

import awscurl.awscurl as aws

uri = 'https://<SERVICE>-workspaces.<REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/query_range?query=http_request_total&start=1710720000.0&end=1710806400.0&step=1h'

headers = {
    'Content-Type': 'application/json',
}
awscurl_auth_params = {
        'method': 'GET',
        'service': <SERVICE>,
        'region': <REGION>,
        'uri': uri,
        'headers': headers,
        'data': '',
        'access_key': <ACCES_KEY>,
        'secret_key': <SECRET_KEY>,
        'security_token': None,
        'data_binary': False}
r = aws.make_request(**awscurl_auth_params)

In this way, I am able to successfully connect to the endpoint and download the data related to the query query=http_request_total&start=1710720000.0&end=1710806400.0&step=1h.

However, as soon as I try to add a filter (as statuscode="200") in the query (e.g. query=http_request_total{statuscode="200"}&start=1710720000.0&end=1710806400.0&step=1h), the same script as above, returns a tedious 400 status code and an annoying 'x-amzn-errortype': 'InvalidQueryStringException' error.

What am I doing wrong?

Thanks in advance.

I tried to encode the quotes, replacing them with %22 but it still gives me the error.
Thanks anyway, I will surely check for some info in prior issues.

For the sake of completeness: #169 (comment) worked for me.