Как ссылаться на существующий API Gateway Authorizer в определении конечной точки OpenApi - PullRequest
1 голос
/ 30 октября 2019

У меня есть шаблон AWS SAM / CloudFormation, написанный на JSON, который содержит:

  1. Определение API шлюза API с конечными точками, определенными с использованием формата OpenAPI DefinitionBody
  2. Определение API Gateway Authorizer, определенное с использованием формата SAM / CF

Я пытаюсь найти способ ссылки на Authorizer (2) для каждой из конечных точек (1), которую я хочуиспользовать авторизатор для.

Вот код:

Определение авторизатора:

"LambdaAuthorizer":{
    "Type": "AWS::ApiGateway::Authorizer",
    "Properties":{
        "IdentitySource":"method.request.header.Authorization",
        "Type":"TOKEN",
        "RestApiId":{
            "Ref": "ApiName"
        },
        "AuthorizerUri": {
            "Fn::Join" : ["", ["arn:aws:apigateway:", {"Ref": "AWS::Region"}, ":lambda:path/2015-03-31/functions/", {"Fn::GetAtt": ["AuthLambda", "Arn"]}, "/invocations"]]
        },
        "IdentityValidationExpression": "^[a-zA-Z0-9]{3,32}$",
        "AuthorizerResultTtlInSeconds": 300,
        "AuthorizerCredentials": {
            "Fn::GetAtt": ["LambdaAuthorizerRole", "Arn"]
        },
        "Name":"lambda-authorizer"
    }
},

Определение конечной точки

"API": {
    "Type": "AWS::Serverless::Api",
    "Properties": {
        ...
        "DefinitionBody": {
            ...
            "paths": {
                "/endpoint": {
                    "post": {
                        "responses": {
                            "200": {
                                "description": "200 response"
                            }
                        },
                        "x-amazon-apigateway-integration": {
                            "uri": {
                                "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${AuthLambda.Arn}/invocations"
                            },
                            "responses": {
                                "default": {
                                    "statusCode": "200",
                                    "contentHandling": "CONVERT_TO_TEXT"
                                }
                            },
                            "passthroughBehavior": "when_no_match",
                            "httpMethod": "POST",
                            "contentHandling": "CONVERT_TO_TEXT",
                            "type": "aws_proxy"
                        },
                        "security" : [{
                            "NAME OF OPEN API SECURITY DEFINITION":[] // Can I reference my existing Authorizer?
                        }]
                    }
                },
            }
        }
    }
}

Как видите, я обнаружил свойство OpenAPI security, которое в соответствии с документацией AWS используется как ссылка на securityDefinitions, где может быть определен Authorizer. .

Но у меня уже есть мой Authorizer, определенный в CloudFormation JSON. Не могу ли я сослаться на это вместо

...