Aws lambda AWS Lambda ApiGateway can';不要调用其他lambda
我在nodeJs中有一个apigatewaylambda,带有一个POST方法,效果很好。我想做的是在ApiGateway执行后触发另一个lambda。 我已经有一些lambda调用了其他lambda,但是我不能让这个工作,我认为这是因为缺少ApiGateway设置 Lambda(ApiGateway,接收事件):Aws lambda AWS Lambda ApiGateway can';不要调用其他lambda,aws-lambda,aws-api-gateway,amazon-iam,aws-serverless,Aws Lambda,Aws Api Gateway,Amazon Iam,Aws Serverless,我在nodeJs中有一个apigatewaylambda,带有一个POST方法,效果很好。我想做的是在ApiGateway执行后触发另一个lambda。 我已经有一些lambda调用了其他lambda,但是我不能让这个工作,我认为这是因为缺少ApiGateway设置 Lambda(ApiGateway,接收事件): module.exports.LambdaA = async (event, context, callback) => { const re
module.exports.LambdaA = async (event, context, callback) => {
const response = {
statusCode: 200,
body: JSON.stringify({ "message": "everything is ok" }),
};
callback(null, response);
} catch(error) {
console.log("> Error: " + error);
error => callback(error, null);
}
};
module.exports.LambdaB = function(event, context, callback) {
console.log("> responsePayload: "+ event['responsePayload']);
let query = "SELECT 1 FROM table_name;"
poolCluster.getConnection(function(error, connection) {
// handles connection and query
});
}
};
Lambda B(非ApiGateway):
module.exports.LambdaA = async (event, context, callback) => {
const response = {
statusCode: 200,
body: JSON.stringify({ "message": "everything is ok" }),
};
callback(null, response);
} catch(error) {
console.log("> Error: " + error);
error => callback(error, null);
}
};
module.exports.LambdaB = function(event, context, callback) {
console.log("> responsePayload: "+ event['responsePayload']);
let query = "SELECT 1 FROM table_name;"
poolCluster.getConnection(function(error, connection) {
// handles connection and query
});
}
};
触发时,Lambda返回OK,我希望Lambda B被触发,但这不会发生。如果我单独测试Lambda B,发送预期的请求,它就可以正常工作。
两个lambda具有相同的角色。
在serverless.yml中,我有:
provider:
name: aws
stage: dev
runtime: nodejs10.x
profile: default
timeout: 20
region: eu-west-1
versionFunctions: true
iamRoleStatements:
- Effect: "Allow"
Action:
- "sns:*"
Resource: "*"
- Effect: Allow
Action:
- lambda:InvokeFunction
- lambda:InvokeAsync
Resource: "*"
- Effect: "Allow"
Action:
- "glue:GetDatabase"
- "glue:GetDatabases"
- "glue:GetTable"
- "glue:GetTables"
Resource: "*"
- Effect: "Allow"
Action:
- "secretsmanager:GetSecretValue"
Resource: secret-value-ARN
- Effect: "Allow"
Action:
- "s3:GetObject*"
- "s3:GetBucket*"
- "s3:List*"
Resource: "*"
package:
individually: true
exclude:
- "**/*"
functions:
LambdaA:
handler: lambda_a/index.handlerA
events:
- http:
path: lambda_a/handlerA
method: post
package:
include:
- lambda_a/**
destinations:
onSuccess: LambdaB-ARN
onFailure: SNS-ARN
LambdaB:
handler: lambda_b/index.handlerB
package:
include:
- lambda_b/**
我更改了信任关系,以便此角色信任apigateway.amazonaws.com,但似乎没有效果。
任何帮助都将不胜感激,谢谢