如何解决AWS Lambda ApiGateway 无法调用其他 lambda
我在 nodeJs 中有一个 ApiGateway lambda,它有一个工作正常的 POST 方法。我想要做的是在 ApiGateway 执行后触发另一个 lambda。 我已经有一些 lambdas 调用其他 lambdas,但我无法使这个工作,我认为这是因为缺少 ApiGateway 设置。
Lambda A(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);
}
};
Lambda B(不是 ApiGateway):
module.exports.LambdaB = function(event,callback) {
console.log("> responsePayload: "+ event['responsePayload']);
let query = "SELECT 1 FROM table_name;"
poolCluster.getConnection(function(error,connection) {
// handles connection and query
});
}
};
触发时,Lambda A 返回 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 ,但似乎没有效果。 任何帮助将不胜感激,谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。