我需要使用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键值吗?
答案 0 :(得分:0)
没有其他函数可以更新api键值。我认为这是设计使然。
我不确定这一点,但是有证据,AWS设计的apikey资源的value属性是不可变的:
/customerId
,/description
,/enabled
,/labels
,/name
,/stages
。 [1] 因此,如果要更改值,则必须删除现有的apikey并创建一个新的apikey。这包括重新创建所有将apikey资源与Usageplan资源相关联的useplanplankey资源。
[1] https://docs.aws.amazon.com/apigateway/api-reference/link-relation/apikey-update/#remarks