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

时间:2019-07-04 14:56:16

标签: aws-sdk aws-api-gateway

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

我浏览了API Gateway SDK Documentation,并认为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 :(得分:0)

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

  • ApiGateway的AWS REST api是服务的端点,它支持最大的可用操作子集。 REST api文档中列出了支持修改的属性:/customerId/description/enabled/labels/name/stages。 [1]
  • AWS管理控制台也不支持修改apikey值。只能选择“显示” apikey的值。

因此,如果要更改值,则必须删除现有的apikey并创建一个新的apikey。这包括重新创建所有将apikey资源与Usageplan资源相关联的useplanplankey资源。

参考文献

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