Пользовательская метрика POST с curl to cloudwatch - PullRequest
0 голосов
/ 25 марта 2019

Я хочу записать результаты вызова API в Cloud Watch. Что я хочу сделать, так это опубликовать показатели потребления в облаке. Моя архитектура спроектирована так, чтобы сидеть на эластичном бобовом стебле, поэтому я предпочитаю устанавливать на него как можно меньше.

Я пытаюсь понять, возможно ли опубликовать облачные часы с простым CURL POST.

У меня есть учебник .

Я не очень понимаю этот пример. Могу ли я к нему с постом? (выглядит как метод get). И какова конечная точка?

Когда я пытался: curl -X POST https://monitoring.&api-domain;/doc/2010-08-01/?Action=PutMetricData&Version=2010-08-01&Namespace=TestNamespace&MetricData.member.1.MetricName=buffers&MetricData.member.1.Unit=Bytes&&MetricData.member.1.Dimensions.member.1.Name=InstanceType&MetricData.member.1.Dimensions.member.1.Value=m1.small&AUTHPARAMS

Я получил эту ошибку: 'api-domain' is not recognized as an internal or external command, operable program or batch file. 'Version' is not recognized as an internal or external command, operable program or batch file. 'Namespace' is not recognized as an internal or external command, operable program or batch file. 'MetricData.member.1.MetricName' is not recognized as an internal or external command, operable program or batch file. 'MetricData.member.1.Unit' is not recognized as an internal or external command, operable program or batch file. 'MetricData.member.1.Dimensions.member.1.Value' is not recognized as an internal or external command, operable program or batch file. 'AUTHPARAMS' is not recognized as an internal or external command, operable program or batch file.

Пожалуйста, не говорите мне использовать aws cli. Я знаю, что могу использовать это. Я хочу попытаться не использовать его.

1 Ответ

1 голос
/ 26 марта 2019

Вот документация, объясняющая, как делать POST-запросы: https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/making-api-requests.html#CloudWatch-API-requests-using-post-method

Вот список конечных точек для региона: https://docs.aws.amazon.com/general/latest/gr/rande.html#cw_region

Результирующий завиток будет выглядеть примерно так:

curl -X POST \
  https://monitoring.us-east-1.amazonaws.com \
  -H 'Accept: application/json' \
  -H 'Authorization: AWS4-HMAC-SHA256 Credential=YOUR_ACCESS_KEY_GOES_HERE/20190326/us-east-1/monitoring/aws4_request, SignedHeaders=accept;content-encoding;content-length;content-type;host;x-amz-date;x-amz-target, Signature=SIGV4_SIGNATURE_GOES_HERE' \
  -H 'Content-Encoding: amz-1.0' \
  -H 'Content-Length: 141' \
  -H 'Content-Type: application/json' \
  -H 'X-Amz-Date: 20190326T071934Z' \
  -H 'X-Amz-Target: GraniteServiceVersion20100801.PutMetricData' \
  -H 'host: monitoring.us-east-1.amazonaws.com' \
  -d '{
    "Namespace": "StackOverflow",
    "MetricData": [
        {
            "MetricName": "TestMetric",
            "Value": 123.0
        }
    ]
}'

Обратите внимание, что заголовок Authorization в приведенном выше примере имеет два заполнителя, YOUR_ACCESS_KEY_GOES_HERE и SIGV4_SIGNATURE_GOES_HERE. Это ключ доступа из учетных данных, которые вы будете использовать для подписи запросов, и подпись, которую вы должны будете создать с помощью этого алгоритма: https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html, и это одна из причин, почему использование CLI или SDK является рекомендуемый способ подачи запросов.

...