Если вам действительно нужно использовать swagger
, я бы сказал
- Напишите свои API в формате
swagger
json - Синтаксически проанализируйте, чтобы добавить свои
API gateway
расширения (конечные точки / авторизатор / роль) - Опубликуйте это
Или
- Создайте свой API с данным
swagger
документом - Передайте
restapi id
в lambda
функцию - Используйте
apigateway
SDK (например, NodeJS SDK для APIGateway ), чтобы получить ресурсы и методы для пересчета и добавленияинтеграция в него.
Но рассматривали ли вы AWS Cloudformation
сценарии?В моем текущем проекте я рассмотрел то, что вы хотите сделать, но, не будучи экспертом в swagger
, я выбрал Cloudformation
.(также считаются AWS SAM
и serverless
).Это немного повторяется, но гораздо проще писать и понимать.Вот пример конечной точки в формате yaml CFN -
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 для APIGateway