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 (将#修改为@)