【问题标题】:Amazon API Gateway using Lambda gives permission error with POST method使用 Lambda 的 Amazon API Gateway 使用 POST 方法给出权限错误
【发布时间】:2017-07-09 08:38:08
【问题描述】:

我一直在使用 Apex 组装和部署 Lambda 函数,我一直在通过 AWS API Gateway 使用 GET 方法的函数工作正常。

我现在需要创建一个 API 以使用 POST 调用 Lambda 函数并传入一个 JSON 对象。为了获得 POST 的基础知识,我创建了一个简单的 Lambda 函数,它只执行以下操作

console.log("!!!!!!! Received request");
callback(null, {data: "Success"});
return;

当我使用 API Gateway 中的 GET 方法调用此 Lambda 函数并测试 API 时,它工作正常 - API Gateway 测试机制会给出“成功”消息,而 CloudWatch 中的成功调用会记录“收到的请求”。

但是,当我使用 POST 请求从 API Gateway 调用相同的 Lambda 函数时,我得到以下信息

“消息”:“内部服务器错误”

我还看到“由于配置错误导致执行失败:Lambda 函数的权限无效”

所以我想知道的是,当通过 POST 方法调用该函数时,调用 Lambda 函数的角色是否需要任何额外的权限。如果是这样,我需要分配给正在使用的角色的权限是什么?

谢谢, 桑杰。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway amazon-iam


    【解决方案1】:

    如果您想通过 API 网关级别调用 POST 方法,则必须部署该 post 方法。转到 AWS API Gateway 控制台。然后选择您的 POST API 名称,然后在网格(屏幕)的顶部,您会发现一个名为 Actions 的下拉菜单,其中有一个名为 deploy 的选项。您必须选择然后只有您的 POST API 才能工作。

    【讨论】:

    • 我已经这样做了,并再次部署了它,但得到了同样的错误。可以肯定的是,我不是在外部测试它(使用 Postman 等),而是作为第一步,从 API Gateway API 定义控制台中对其进行测试。
    【解决方案2】:

    API Gateway 需要权限才能调用您的 Lambda 函数。如果您通过 Web 控制台配置 API,它会提示您自动添加权限,并且未使用阶段变量指定 Lambda 函数。

    因此,如果您使用 CloudFormation 或 Swagger 导入等工具来创建或更新您的 API,或者使用阶段变量指定 Lambda 函数,则需要手动发出 aws lambda add-permission 命令来设置权限。

    查看这些帖子了解更多详情:

    Lambda function -> Api Gateway stage variable permission manually

    AWS API Gatewat with proxy Lambda: Invalid permissions on Lambda function

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 2016-03-16
      • 2017-08-20
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多