Невозможно запросить конечную точку API CloudWatch Log AWS

Я пытаюсь создать небольшое веб-приложение, которое наша внутренняя команда будет использовать для просмотра журналов CloudWatch. Сейчас я нахожусь на очень ранней стадии разработки и просто пытаюсь получить доступ к журналам через Postman, используя https://logs.us-east-1.amazonaws.com, как указано в официальной документации AWS API.

Я выполнил шаги, чтобы настроить свой POST-запрос на конечную точку со следующими заголовками: Заголовки, созданные почтальоном

Кроме того, в соответствии с документацией я предоставил действие в теле этого почтового запроса: {"Action": "DescribeLogGroups"}

Используя AWS CLI, это работает нормально, и я могу видеть все свои группы журналов.

Когда я отправляю этот запрос на https://logs.us-east-1.amazonaws.com Я возвращаюсь:

{
    "Output": {
        "__type": "com.amazon.coral.service#UnknownOperationException",
        "message": null
    },
    "Version": "1.0"
}

Код состояния - 200.

Вещи, которые я пробовал:

  • Полное удаление тела запроса - ›приводит к внутренней ошибке сервера
  • добавление /describeloggroups к URL без тела - ›приводит к внутренней ошибке сервера

Я действительно не уверен, что я здесь делаю не так.


person Kolton Starr    schedule 19.09.2020    source источник
comment
Опубликуйте запрос, который вы делаете, как примеры в docs.aws .amazon.com / AmazonCloudWatchLogs / latest / APIReference /   -  person kielni    schedule 20.09.2020


Ответы (2)


Лучший способ - установить заголовок X-Amz-Target на Logs_20140328.DescribeLogGroups.

Вот пример запроса. amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DescribeLogGroups.html#API_DescribeLogGroups_ExampleX-Amz-TargetRequest

Ниже представлена ​​коллекция Postman, которую вы можете попробовать. Сохраните его как файл и импортируйте в Postman с помощью File -> Import. Это также требует, чтобы вы установили учетные данные и переменные региона в почтальоне.

{
    "info": {
        "name": "CloudWatch Logs",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": [
        {
            "name": "DescribeLogs",
            "request": {
                "auth": {
                    "type": "awsv4",
                    "awsv4": [
                        {
                            "key": "sessionToken",
                            "value": "{{SESSION_TOKEN}}",
                            "type": "string"
                        },
                        {
                            "key": "service",
                            "value": "logs",
                            "type": "string"
                        },
                        {
                            "key": "region",
                            "value": "{{REGION}}",
                            "type": "string"
                        },
                        {
                            "key": "secretKey",
                            "value": "{{SECRET_ACCESS_KEY}}",
                            "type": "string"
                        },
                        {
                            "key": "accessKey",
                            "value": "{{ACCESS_KEY_ID}}",
                            "type": "string"
                        }
                    ]
                },
                "method": "POST",
                "header": [
                    {
                        "warning": "This is a duplicate header and will be overridden by the Content-Type header generated by Postman.",
                        "key": "Content-Type",
                        "type": "text",
                        "value": "application/json"
                    },
                    {
                        "key": "X-Amz-Target",
                        "type": "text",
                        "value": "Logs_20140328.DescribeLogGroups"
                    },
                    {
                        "warning": "This is a duplicate header and will be overridden by the host header generated by Postman.",
                        "key": "host",
                        "type": "text",
                        "value": "logs.{{REGION}}.amazonaws.com"
                    },
                    {
                        "key": "Accept",
                        "type": "text",
                        "value": "application/json"
                    },
                    {
                        "key": "Content-Encoding",
                        "type": "text",
                        "value": "amz-1.0"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{}"
                },
                "url": {
                    "raw": "https://logs.{{REGION}}.amazonaws.com",
                    "protocol": "https",
                    "host": [
                        "logs",
                        "{{REGION}}",
                        "amazonaws",
                        "com"
                    ]
                }
            },
            "response": []
        }
    ],
    "protocolProfileBehavior": {}
}
person Dejan Peretin    schedule 20.09.2020

Попробуйте скопировать это в файл json, импортировать в Postman и добавить недостающие переменные. Я попытался получить DescribeLogGroups в журналах службы. Посмотрите документацию здесь .com / AmazonCloudWatchLogs / latest / APIReference / API_DescribeLogGroups.html # API_DescribeLogGroups_Example

{
    "info": {
        "_postman_id": "8660f3fc-fc6b-4a71-84ba-739d8b4ea7c2",
        "name": "CloudWatch Logs",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": [
        {
            "name": "DescribeLogs",
            "request": {
                "auth": {
                    "type": "awsv4",
                    "awsv4": [
                        {
                            "key": "service",
                            "value": "{{AWS_SERVICE_NAME}}",
                            "type": "string"
                        },
                        {
                            "key": "region",
                            "value": "{{AWS_REGION}}",
                            "type": "string"
                        },
                        {
                            "key": "secretKey",
                            "value": "{{AWS_SECRET_ACCESS_KEY}}",
                            "type": "string"
                        },
                        {
                            "key": "accessKey",
                            "value": "{{AWS_ACCESS_KEY_ID}}",
                            "type": "string"
                        },
                        {
                            "key": "sessionToken",
                            "value": "",
                            "type": "string"
                        }
                    ]
                },
                "method": "POST",
                "header": [
                    {
                        "key": "X-Amz-Target",
                        "value": "Logs_20140328.DescribeLogGroups",
                        "type": "text"
                    },
                    {
                        "key": "Content-Encoding",
                        "value": "amz-1.0",
                        "type": "text"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{}",
                    "options": {
                        "raw": {
                            "language": "json"
                        }
                    }
                },
                "url": {
                    "raw": "https://{{AWS_SERVICE_NAME}}.{{AWS_REGION}}.amazonaws.com",
                    "protocol": "https",
                    "host": [
                        "{{AWS_SERVICE_NAME}}",
                        "{{AWS_REGION}}",
                        "amazonaws",
                        "com"
                    ]
                }
            },
            "response": []
        }
    ]
}
Request для получения дополнительной информации о заголовках и теле. PS: токен сеанса не является обязательным, в моем случае он мне не нужен. Надеюсь, он сработает для всех, кто

{
    "info": {
        "_postman_id": "8660f3fc-fc6b-4a71-84ba-739d8b4ea7c2",
        "name": "CloudWatch Logs",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": [
        {
            "name": "DescribeLogs",
            "request": {
                "auth": {
                    "type": "awsv4",
                    "awsv4": [
                        {
                            "key": "service",
                            "value": "{{AWS_SERVICE_NAME}}",
                            "type": "string"
                        },
                        {
                            "key": "region",
                            "value": "{{AWS_REGION}}",
                            "type": "string"
                        },
                        {
                            "key": "secretKey",
                            "value": "{{AWS_SECRET_ACCESS_KEY}}",
                            "type": "string"
                        },
                        {
                            "key": "accessKey",
                            "value": "{{AWS_ACCESS_KEY_ID}}",
                            "type": "string"
                        },
                        {
                            "key": "sessionToken",
                            "value": "",
                            "type": "string"
                        }
                    ]
                },
                "method": "POST",
                "header": [
                    {
                        "key": "X-Amz-Target",
                        "value": "Logs_20140328.DescribeLogGroups",
                        "type": "text"
                    },
                    {
                        "key": "Content-Encoding",
                        "value": "amz-1.0",
                        "type": "text"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{}",
                    "options": {
                        "raw": {
                            "language": "json"
                        }
                    }
                },
                "url": {
                    "raw": "https://{{AWS_SERVICE_NAME}}.{{AWS_REGION}}.amazonaws.com",
                    "protocol": "https",
                    "host": [
                        "{{AWS_SERVICE_NAME}}",
                        "{{AWS_REGION}}",
                        "amazonaws",
                        "com"
                    ]
                }
            },
            "response": []
        }
    ]
}
person Omar Ghayor    schedule 19.05.2021