С помощью формирования облака я настроил API, ниже приведен пример из него с опущенными некоторыми именами.
SwaggerServiceJob:
Type: AWS::Serverless::Function
Properties:
FunctionName: swagger-job
Handler: dsfdsf::handle
Runtime: java8
CodeUri: sdfds
Timeout: 60
MemorySize: 512
Policies:
- Version: '2012-10-17' # Policy Document
Statement:
- Effect: Allow
Action:
- lambda:InvokeFunction
Resource: '*'
- AmazonS3FullAccess
- AmazonSSMReadOnlyAccess
Environment:
Variables:
jobName: SwaggerService
filePath: /tmp/
LogsSwagger:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub "/aws/lambda/${SwaggerServiceJob}"
RetentionInDays: 180
SwaggerResource:
Type: AWS::ApiGateway::Resource
Properties:
ParentId: !GetAtt ApiGatewayRestApi.RootResourceId
PathPart: 'swagger'
RestApiId: !Ref ApiGatewayRestApi
SwaggerProxyResource:
Type: AWS::ApiGateway::Resource
Properties:
ParentId: !Ref SwaggerResource
PathPart: '{proxy+}'
RestApiId: !Ref ApiGatewayRestApi
SwaggerMethod:
Type: AWS::ApiGateway::Method
Properties:
ApiKeyRequired: false
AuthorizationType: NONE
HttpMethod: ANY
Integration:
Credentials: !GetAtt ApiGatewayIamRole.Arn
IntegrationHttpMethod: POST
PassthroughBehavior: WHEN_NO_MATCH
TimeoutInMillis: 29000
Type: AWS_PROXY
Uri: !Sub 'arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${SwaggerServiceJob.Arn}/invocations'
ResourceId: !Ref SwaggerProxyResource
RestApiId: !Ref ApiGatewayRestApi
ApiGatewayRestApi:
Type: AWS::ApiGateway::RestApi
Properties:
ApiKeySourceType: HEADER
Description: The API
BinaryMediaTypes:
- '*/*'
EndpointConfiguration:
Types:
- REGIONAL
Name: API
ApiGatewayStage:
Type: AWS::ApiGateway::Stage
Properties:
DeploymentId: !Ref ApiGatewayDeployment
Description: Config API Stage
RestApiId: !Ref ApiGatewayRestApi
StageName: 'v0'
ApiGatewayDeployment:
Type: AWS::ApiGateway::Deployment
DependsOn: SwaggerMethod
Properties:
Description: Lambda API Deployment
RestApiId: !Ref ApiGatewayRestApi
ApiGatewayIamRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: ''
Effect: 'Allow'
Principal:
Service:
- 'apigateway.amazonaws.com'
Action:
- 'sts:AssumeRole'
Path: '/'
Policies:
- PolicyName: LambdaAccess
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: 'Allow'
Action: 'lambda:*'
Resource: '*'
Outputs:
apiGatewayInvokeURL:
Value: !Sub "https://${ApiGatewayRestApi}.execute-api.${AWS::Region}.amazonaws.com/v0"
Теперь моя проблема в том, что я не могу использовать прокси. https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-settings-method-request.html
Я хочу, чтобы конечная точка называлась / swagger, и это прекрасно работает. Тем не менее, я также хочу подпути, такие как / swagger / что-то и / swagger / else Когда я пытаюсь вызвать эти конечные точки, я просто получаю сообщение об ошибке
{
message: "Missing Authentication Token"
}
Если я пытаюсь перейти к / swagger / testв консоли AWS Gateway я могу пройти.