Есть ли способ обновить значение ключа API с помощью SDK? - PullRequest
0 голосов
/ 04 июля 2019

Мне нужно обновить значение ключа API, используя мою лямбда-функцию.

Я просмотрел Документация API Gateway SDK и подумал, что updateApiKey - лучший вариант, но когда я отправляю запрос, я получаю сообщение об ошибке:

BadRequestException: Invalid patch path  'value' specified for op 'replace'. Must be one of: [/description, /enabled, /name, /customerId]
    at Object.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:51:27)
    at Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/rest_json.js:55:8)
    at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
    at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
    at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:683:14)
    at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:685:12)

В основном, это говорит о том, что я не могу обновить "значение", поэтому я не могу делать то, что мне нужно

Пока мой код таков:

let sendPromise = null;
let params = {
    "apiKey": "xxxxxxxxx",
    patchOperations: [
        {
            op: "replace",
            path: "value",
            value: "teste123"
        }
    ]
};

sendPromise = new AWS.APIGateway().updateApiKey( params ).promise();

try {
    const data = await sendPromise;
    return criarResposta( 200, `{
        "message": "OK"
    }` );
} catch (err) {
    console.error(err, err.stack);
    return criarResposta( 500, err.stack );
}

Есть ли другая функция для обновления значения ключа API?

1 Ответ

0 голосов
/ 05 июля 2019

Нет другой функции для обновления значения ключа API.Я думаю, что это специально.
Я точно не знаю, но есть свидетельство , что AWS разработал неизменяемый атрибут значения ресурса apikey:

  • API AWS RESTдля ApiGateway является конечной точкой службы, которая поддерживает наибольшее подмножество доступных операций.Атрибуты, поддерживающие изменение, перечислены в документации REST API: /customerId, /description, /enabled, /labels, /name, /stages.[1]
  • Консоль управления AWS также не поддерживает изменение значения apikey.Существует только опция «показать» значение apikey.

Так что если вы хотите изменить значение, вы должны удалить существующий apikey и создать новый.Это включает в себя воссоздание всех ресурсов плана использования, которые связывают ресурсы apikey с ресурсами плана использования.

Ссылки

[1] https://docs.aws.amazon.com/apigateway/api-reference/link-relation/apikey-update/#remarks

...