首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在用AWS合成lambda函数时得到"this.combinedGrant不是一个函数“?

为什么我在用AWS合成lambda函数时得到"this.combinedGrant不是一个函数“?
EN

Stack Overflow用户
提问于 2020-07-05 23:50:48
回答 1查看 169关注 0票数 0

我正在使用AWS创建我的云堆栈,我发现错误"this.combinedGrant不是一个函数“是由下面的代码生成的,但是我找不到对它的任何引用:

代码语言:javascript
复制
    let authFunctions = [
      {
        name: 'user-registration',
        handler: 'index.register',
        code: './handlers/user-registration',
        loginAccess: loginTable.grantFullAccess,
        otpAccess: otpTable.grantWriteData
      },

..。

代码语言:javascript
复制
    for (let i in authFunctions) {
      let definition = authFunctions[i];
      let func = new Function(this, `${definition.name}-function`, {
        runtime: Runtime.NODEJS_12_X,
        handler: definition.handler,
        code: Code.asset(definition.code),
        environment: {
          LOGIN_TABLE_NAME: loginTable.tableName,
          OTP_TABLE_NAME: otpTable.tableName,
          MAILGUN_DOMAIN: credentials.mailgun.domain,
          MAILGUN_FROM: credentials.mailgun.from,
          MAILGUN_API_KEY: credentials.mailgun.api_key,
          JWT_SECRET: definition.hasJWTSecret ? "secret-placeholder" : ""
        },
        layers: [authLayer, utilityLayer],
        timeout: Duration.seconds(5)
      });

      definition.loginAccess(func);
      definition.otpAccess(func);

      let api = new RestApi(this, `${definition.name}-api`);
      api.root.addMethod('POST', new LambdaIntegration(func));
    }
EN

回答 1

Stack Overflow用户

发布于 2020-07-05 23:50:48

问题是试图直接分配loginTable.grantFullAccess函数。解决方案是用字符串替换,然后使用开关情况应用它们:

代码语言:javascript
复制
    let authFunctions = [
      {
        name: 'user-registration',
        handler: 'index.register',
        code: './handlers/user-registration',
        loginAccess: 'full',
        otpAccess: 'write'
      },

..。

代码语言:javascript
复制
      switch (definition.loginAccess) {
        case 'full':
          loginTable.grantFullAccess(func);
          break;
        case 'read':
          loginTable.grantReadData(func);
          break;
      }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62747498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档