我正在尝试使用 Swagger文件在APIGateway中创建多个API。
现在,当我使用AWS控制台时,我手动导入了swagger文件,然后在创建的每个API中添加了端点/身份验证。
我想使用 AWS Lambda(Node JS)完成同一任务,以便我可以:
我调查了AWS documentation,但无法以正确的方式理解它。 如何完成此任务?
答案 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 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