从Swagger设置APIgateway
我正在尝试使用Swagger文件在APIGateway中创建多个API。
现在,当我使用AWS控制台时,我手动导入swagger文件,然后在创建的每个API中添加端点/身份验证。
我想使用AWS Lambda(Node JS)完成相同的任务,以便我可以:
- 使用Swagger创建API
- 添加端点(自定义服务器)
- 添加授权人(cognito)
我调查了AWS documentation,但无法以正确的方式理解它。如何完成这项任务?
回答如下:如果你真的必须使用swagger
,我会说
- 以
swagger
json格式编写API - 解析它以添加你的
API gateway
扩展(端点/授权者/角色) - 发布它
要么
- 使用给定的
swagger
文档创建API - 将
restapi id
传递给lambda
函数 - 使用
apigateway
SDK(例如NodeJS SDK for APIGateway)获取restapi的资源和方法,并为其添加集成。
但你考虑过AWS Cloudformation
脚本吗?在我目前的项目中,我已经考虑过你想做什么,但我不是swagger
的专家我选择了Cloudformation
。 (也被认为是AWS SAM
和serverless
)。它有点重复,但发现更容易编写和理解。以下是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