Сконфигурируйте метод API Gateway для наследования настроек регулирования со стадии - PullRequest
1 голос
/ 25 апреля 2020

Я использую команду AWS CLI update-stage для настройки указанных параметров регулирования c для метода API-шлюза, который работает нормально:

aws apigateway update-stage --rest-api-id <the-id> --stage-name <the-stage-name>
--patch-operations op=replace,path='/~1cats~1{pawId}/GET/throttling/rateLimit',value=10

Однако, когда я пытаюсь удалить настройка, которую я только что настроил, и настройки дросселирования будут унаследованы от рабочей области, как по умолчанию, я получаю сообщение об ошибке:

aws apigateway update-stage --rest-api-id <the-id> --stage-name <the-stage-name>
--patch-operations op=remove,path='/~1cats~1{pawId}/GET/throttling/rateLimit'
An error occurred (BadRequestException) when calling the UpdateStage operation:
Cannot remove method setting ~1cats~1{pawId}/GET/throttling/rateLimit because there
is no method setting for this method

Как использовать CLI (или AWS SDK в этом отношении), чтобы получить метод, чтобы наследовать настройки от стадии снова?

1 Ответ

1 голос
/ 27 апреля 2020

Проблема здесь с путем для удаления вызова. Вы используете "/~1cats~1ndompawIdcasts/GET/throttling/rateLimit".

API-шлюз поддерживает удаление всех настроек метода, а не только конкретного метода. Я удалил «/ throttling / rateLimit» из моего вызова удаления, и он сработал.

Я выполнил следующие команды, и он работает

aws apigateway update-stage --rest-api-id <> --stage-name <> --patch-operations op=replace,path='/hw/GET/throttling/rateLimit',value=20
{
    "deploymentId": "<>",
    "stageName": "<>",
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "methodSettings": {
        "hw/GET": {
            "metricsEnabled": false,
            "dataTraceEnabled": false,
            "throttlingBurstLimit": 5000,
            "throttlingRateLimit": 20.0,
            "cachingEnabled": false,
            "cacheTtlInSeconds": 300,
            "cacheDataEncrypted": false,
            "requireAuthorizationForCacheControl": true,
            "unauthorizedCacheControlHeaderStrategy": "SUCCEED_WITH_RESPONSE_HEADER"
        }
    },
    "tracingEnabled": false,
    "createdDate": "2020-04-24T13:50:18-07:00",
    "lastUpdatedDate": "2020-04-27T01:21:45-07:00"
}
aws apigateway update-stage --rest-api-id <> --stage-name <> --patch-operations op=remove,path=/hw/GET,value=""
{
    "deploymentId": "<>",
    "stageName": "<>",
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "methodSettings": {},
    "tracingEnabled": false,
    "createdDate": "2020-04-24T13:50:18-07:00",
    "lastUpdatedDate": "2020-04-27T01:36:12-07:00"
}

Я нашел это решение, проверив сетевой вызов сделано консолью API Gateway.

...