如何在 AWS SAM 中为 HTTP ApiGateway 配置 IAM 授权方?

How to configure IAM authorizer for HTTP ApiGateway in AWS SAM?

我们有一个使用 AWS SAM 构建的服务。现在我们要为其添加身份验证。我们有一个 HTTP ApiGateway,我们想向它添加一个 IAM 身份验证器。不幸的是,我找不到任何关于如何做到这一点的示例或文档?我已经尝试过,以下选项:

  exampleApi:
    Type: AWS::Serverless::HttpApi
    Properties:
      CorsConfiguration: True
      DefinitionBody:
        'Fn::Transform':
          Name: 'AWS::Include'
          Parameters:
            Location: 'openapi.yaml'
      StageName: v2
      Auth:
        DefaultAuthorizer: AWS_IAM

  exampleApi:
    Type: AWS::Serverless::HttpApi
    Properties:
      CorsConfiguration: True
      DefinitionBody:
        'Fn::Transform':
          Name: 'AWS::Include'
          Parameters:
            Location: 'openapi.yaml'
      StageName: v2

  fnExample:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.example
      Role: !GetAtt dataLambdaRole.Arn
      Events:
        getExample:
          Type: HttpApi
          Properties:
            Path: /example
            Method: get
            ApiId: !Ref exampleApi
            Auth:
              Authorizer: AWS_IAM

不幸的是,它们都以错误结束。我能否请您分享有关如何在 AWS SAM 模板中为 HTTP ApiGateway 配置 IAM 授权方的示例或说明。

我想我找到了。 不幸的是,目前(2021 年 1 月 21 日)似乎无法使用 SAM 模板为 HTTP API 配置 IAM 安全性。这是我在 AWS 文档中找到的内容:

Mechanisms for controlling access AWS::Serverless::HttpApi AWS::Serverless::Api
Lambda authorizers
IAM permissions
Amazon Cognito user pools
API keys
Resource policies
OAuth 2.0/JWT authorizers

可以找到更多详细信息here

AWS 方面正在做一些工作来解决这个问题: