Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda AWS Lambda ApiGateway can';不要调用其他lambda_Aws Lambda_Aws Api Gateway_Amazon Iam_Aws Serverless - Fatal编程技术网

Aws lambda AWS Lambda ApiGateway can';不要调用其他lambda

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

我在nodeJs中有一个apigatewaylambda,带有一个POST方法,效果很好。我想做的是在ApiGateway执行后触发另一个lambda。 我已经有一些lambda调用了其他lambda,但是我不能让这个工作,我认为这是因为缺少ApiGateway设置

Lambda(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 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,但似乎没有效果。 任何帮助都将不胜感激,谢谢