在Lambda中创建API网关api密钥

时间:2017-10-04 11:29:16

标签: amazon-web-services lambda aws-api-gateway api-gateway

我尝试使用sdk在lambda中创建API网关api密钥,但我似乎无法使其工作 这是我的代码

exports.handler = (event, context, callback) => {
        var apigateway = new AWS.APIGateway({apiVersion: '2015-07-09'});
        var params = {
      description: 'desc',
      enabled: true,
      generateDistinctId: true,
      name: 'apiKey1',
      value: 'qwerty'
    };
    apigateway.createApiKey(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
}

该功能仅在1分钟后超时,无需向CloudWatch记录任何内容。感觉回调从未被实际调用过。 以下是与该职能部门相关的政策:enter image description here 任何人都知道我错过了什么?

2 个答案:

答案 0 :(得分:1)

您需要在createKey成功和错误时调用回调方法以避免超时。

exports.handler = (event, context, callback) => {
  var apigateway = new AWS.APIGateway({apiVersion: '2015-07-09'});
  var params = {
      description: 'desc',
      enabled: true,
      generateDistinctId: true,
      name: 'apiKey1',
      value: 'qwerty'
    };
    apigateway.createApiKey(params, function(err, data) {
      if (err) { 
          console.log(err, err.stack); // an error occurredelse
          callback(err);
      } else {
          console.log(data); // successful response
          callback(null, data);
      }
    });
}

答案 1 :(得分:0)

参数不符合记录,

var params = {
  customerId: 'STRING_VALUE',
  description: 'STRING_VALUE',
  enabled: true || false,
  generateDistinctId: true || false,
  name: 'STRING_VALUE',
  stageKeys: [
    {
      restApiId: 'STRING_VALUE',
      stageName: 'STRING_VALUE'
    },
    /* more items */
  ],
  value: 'STRING_VALUE'
};
apigateway.createApiKey(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

stageKeys丢失了。

希望它有所帮助。