我正在使用AWS创建我的云堆栈,我发现错误"this.combinedGrant不是一个函数“是由下面的代码生成的,但是我找不到对它的任何引用:
let authFunctions = [
{
name: 'user-registration',
handler: 'index.register',
code: './handlers/user-registration',
loginAccess: loginTable.grantFullAccess,
otpAccess: otpTable.grantWriteData
},..。
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));
}发布于 2020-07-05 23:50:48
问题是试图直接分配loginTable.grantFullAccess函数。解决方案是用字符串替换,然后使用开关情况应用它们:
let authFunctions = [
{
name: 'user-registration',
handler: 'index.register',
code: './handlers/user-registration',
loginAccess: 'full',
otpAccess: 'write'
},..。
switch (definition.loginAccess) {
case 'full':
loginTable.grantFullAccess(func);
break;
case 'read':
loginTable.grantReadData(func);
break;
}https://stackoverflow.com/questions/62747498
复制相似问题