我在创建与 AWS API Getaway 中的使用计划关联的API 密钥时遇到问题(使用 AWS SDK for node.js)。
在 AWS 控制台中,您可以通过此按钮将 API 密钥附加到使用计划:
但是我在AWS SDK 文档中找不到类似的功能
我在创建与 AWS API Getaway 中的使用计划关联的API 密钥时遇到问题(使用 AWS SDK for node.js)。
在 AWS 控制台中,您可以通过此按钮将 API 密钥附加到使用计划:
但是我在AWS SDK 文档中找不到类似的功能
这段代码很神奇:
var params = {
keyId: 'STRING_VALUE', /* required */
keyType: 'STRING_VALUE', /* required */
usagePlanId: 'STRING_VALUE' /* required */
};
apigateway.createUsagePlanKey(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
我缺少的是 keyType 必须是“API_KEY”
这是创建 API 密钥并将其分配给使用计划的完整示例。
async function createApiKey(apikey_name, usage_plan="free") {
const usage_plans = {
free: "kotc0f", // usage plan IDs
basic: "ju5fea"
};
if (!usage_plan || !(usage_plan in usage_plans)) {
console.log(usage_plan + " usage plan does not exist");
return false;
}
var params = {
name: apikey_name,
description: "Created via API on " + (new Date).toISOString(),
enabled: true,
generateDistinctId: true
};
let api_key = await new Promise((resolve) => {
apigateway.createApiKey(params, function (err, data) {
if (err) {
console.log("ERROR", err, err.stack); // an error occurred
resolve(false);
}
else {
resolve(data);
}
});
});
if (!api_key) return false;
params = {
keyId: api_key.id,
keyType: "API_KEY",
usagePlanId: usage_plans[usage_plan]
};
await new Promise((resolve) => {
apigateway.createUsagePlanKey(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
resolve(false);
}
else {
resolve(data);
}
});
});
return api_key;
}