【问题标题】:AWS API Gateway not invoking specified lambdaAWS API Gateway 未调用指定的 lambda
【发布时间】:2020-10-01 15:26:58
【问题描述】:

我最近部署了一个新的 API 端点,并通过云形成将其链接到指定的 lambda。

          x-amazon-apigateway-integration:
            uri: !Join 
              - ''
              - - 'arn:aws:apigateway:'
                - !Ref 'AWS::Region'
                - ':lambda:path/2015-03-31/functions/arn:aws:lambda:'
                - !Ref 'AWS::Region'
                - ':'
                - !Ref 'AWS::AccountId'
                - ':function:'
                - !Ref lbdBusinessPersonAccountsFunctionName
                - '-'
                - !Ref EnvName
                - ':live'
                - /invocations

当我检查 API Gateway 控制台时,似乎 lambda 已正确集成到 API 端点。但是当我检查 lambda 控制台本身时,没有生成 API GW 触发事件。

当我尝试手动将其链接到网关时,它不允许我指定要链接到的资源,而是在 lambda 名称下创建一个新资源。

我是否缺少手动链接步骤?

【问题讨论】:

  • 能否展示完整的 API 资源集成定义?
  • 你创建了一个stage并部署了api吗?

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


【解决方案1】:

在您的 cloudformation 模板上,假设您使用的是 YAML;在下面添加权限映射资源。这使 apigateway 有权添加触发器/调用您的 lambda(这是对适当 IAM 权限的补充)。

FunctionInvokePermissions:
  Type: "AWS::Lambda::Permission"
  Properties:
    Action: "lambda:InvokeFunction"
    FunctionName: !GetAtt "Function.Arn"
    Principal: "apigateway.amazonaws.com"
    SourceArn: !Sub 
      - "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${RestApiId}/${pathpart}/${method}"

【讨论】:

    猜你喜欢
    • 2017-12-07
    • 2020-03-17
    • 2017-09-19
    • 2021-01-10
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多