【问题标题】:Setup APIgateway from Swagger | programmatically从 Swagger 设置 APIgateway |以编程方式
【发布时间】:2019-02-20 03:56:27
【问题描述】:

我正在尝试使用 Swagger 文件在 APIGateway 中创建多个 API。

现在,当我使用 AWS 控制台时,我手动导入 swagger 文件,然后在创建的每个 API 中添加端点/身份验证。

我想使用 AWS Lambda (Node JS) 完成相同的任务,这样我就可以:

  1. 使用 Swagger 创建 API
  2. 添加端点(自定义服务器)
  3. 添加授权人(cognito)

我查看了AWS documentation,但无法以正确的方式理解它。 如何完成这项任务?

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda swagger aws-api-gateway


    【解决方案1】:

    如果你真的必须使用swagger,我会说

    • swagger json 格式编写您的 API
    • 解析它以添加您的API gateway 扩展(端点/授权者/角色)
    • 发布它

    或者

    • 使用给定的swagger 文档创建您的 API
    • restapi id 传递给lambda 函数
    • 使用apigateway SDK(例如NodeJS SDK for APIGateway)获取restapi的资源和方法,并为其添加集成。

    但是您考虑过AWS Cloudformation 脚本吗?在我目前的项目中,我已经考虑过您想要做什么,但不是swagger 的专家,我选择了Cloudformation。 (也考虑AWS SAMserverless)。它有点重复,但更容易编写和理解。这是 CFN yaml 格式的端点示例 -

    ResourceUserActions:
      Type: AWS::ApiGateway::Resource
      DeletionPolicy: Delete
      Properties:
        RestApiId: !Ref RestAPI
        ParentId: !Ref ResourceUser
        PathPart: "{action+}"
    UserActionsMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RestApiId: !Ref RestAPI
      ResourceId: !Ref ResourceUserActions
      HttpMethod: ANY
      AuthorizationType: COGNITO_USER_POOLS
      AuthorizerId: !Ref ApiAuthorizer
      Integration:
        Type: AWS_PROXY
        IntegrationHttpMethod: POST
        Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HandlerFunction.Arn}/invocations
        Credentials: !GetAtt ApiGatewayRole.Arn
    

    类型AWS::ApiGateway::Resource 定义一个资源,AWS::ApiGateway::Method 将方法、授权者、集成类型详细信息添加到资源。更多详情请见AWS CFN for APIGateway

    【讨论】:

    • 实际上,我已经获得了一个 swagger 文件。我的任务是使用该 swagger 文件自动设置 API Gateway。
    • 在答案中添加了另一个选项。
    • 在这一点“使用给定的 swagger 文档创建您的 API”,如何使用 Node JS 执行此操作或如何自动执行此步骤?我基本上被困在这一点上。我找不到相应的 API
    • 您将不得不使用Cloudformation 从 swagger 创建restapi。请参阅docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…。它可以选择从 S3 获取 OpenApi 规范。见docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
    猜你喜欢
    • 2022-11-11
    • 2022-12-13
    • 1970-01-01
    • 2021-11-21
    • 2018-11-26
    • 2011-04-18
    • 2012-07-18
    • 2016-02-15
    • 2014-07-26
    相关资源
    最近更新 更多