10

我在创建与 AWS API Getaway 中的使用计划关联的API 密钥时遇到问题(使用 AWS SDK for node.js)。

在 AWS 控制台中,您可以通过此按钮将 API 密钥附加到使用计划: 在此处输入图像描述

但是我在AWS SDK 文档中找不到类似的功能

4

2 回答 2

16

这段代码很神奇:

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”

于 2016-12-07T11:16:02.573 回答
1

这是创建 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;
}
于 2021-10-08T07:14:27.570 回答