Swagger设置APIgateway以编程方式

时间:2019-02-19 10:19:06

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

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

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

我想使用 AWS Lambda(Node JS)完成同一任务,以便我可以:

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

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

1 个答案:

答案 0 :(得分:0)

如果您确实需要使用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