有没有办法使用 sdk 更新 api 键值?

Is there a way to update api key value using sdk?

我需要使用我的 lambda 函数更新 api 键值。

我查看了 API Gateway SDK Documentation,我认为 updateApiKey 是最好的选择,但是当我发送请求时,我收到一个错误 return:

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)

基本上是说我无法更新"value",所以我不能做我需要的

现在,我的代码是:

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键值?

没有其他函数可以更新 api 键值。我认为这是设计使然。
我不确定这一点,但有 证据 表明 AWS 设计了 ​​apikey 资源的值属性不可变:

  • ApiGateway 的 AWS REST api 是支持最大可用操作子集的服务端点。 REST api 文档中列出了支持修改的属性:/customerId/description/enabled/labels/name/stages. [1]
  • AWS 管理控制台也不支持修改api键值。只有 'show' api 键值的选项。

所以如果你想改变这个值,你必须删除现有的 apikey 并创建一个新的。这包括重新创建所有 usageplankey 资源,这些资源将 apikey 资源与 usageplan 资源相关联。

参考资料

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