2017-03-17 56 views
1

我已经在我的cloudformation模板中定义一个定制的授权:参考的API中的授权人定义网关路径

MyCustomAuthorizer: 
    Type: AWS::ApiGateway::Authorizer 
    Properties: 
    Name: "MyCustomAuthorizer" 
    Type: "TOKEN" 
    AuthorizerUri: "arn:my_lambda" 
    IdentitySource: "method.request.header.Auth" 
    RestApiId: 
     Ref: ApiGatewayApi 

而且我有一个API网关API:

ApiGatewayApi: 
    Type: AWS::ApiGateway::RestApi 
    Properties: 
     Name: "ApiGatewayApi" 
     Description: "Api gateway REST API" 
     Body: 
     basePath: "/prod" 
     schemes: 
     - "https" 
     paths: 
      /echo: 
      get: 
       consumes: 
       - "application/json" 
       produces: 
       - "application/json" 
       responses: 
       "200": 
        description: "200 response" 
        schema: 
        $ref: "#/definitions/schema" 
       security: 
       - sigv4: [] 

如何使具体是/echo路径使用MyCustomAuthorizer

我可以使用说明here

回答

0

的文档有一个example在控制台上做到这一点。您需要在方法内的'安全'属性中添加定制授权人

"securityDefinitions" : { 
    "test-authorizer" : { 
     "type" : "apiKey",       // Required and the value must be "apiKey" for an API Gateway API. 
     "name" : "Authorization",     // The source header name identifying this authorizer. 
     "in" : "header",       // Required and the value must be "header" for an AAPI Gateway API. 
     "x-amazon-apigateway-authtype" : "oauth2", // Specifies the authorization mechanism for the client. 
     "x-amazon-apigateway-authorizer" : {  // An API Gateway custom authorizer definition 
     "type" : "token",      // Required property and the value must "token" 
     "authorizerUri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:account-id:function:function-name/invocations", 
     "authorizerCredentials" : "arn:aws:iam::account-id:role", 
     "identityValidationExpression" : "^x-[a-z]+", 
     "authorizerResultTtlInSeconds" : 60 
     } 
    } 
    } 


    "/http" : { 
    "get" : { 
    "responses" : { }, 
    "security" : [ { 
     "test-authorizer" : [ ] 
    } ], 
    "x-amazon-apigateway-integration" : { 
     "type" : "http", 
     "responses" : { 
     "default" : { 
      "statusCode" : "200" 
     } 
     }, 
     "httpMethod" : "GET", 
     "uri" : "http://api.example.com" 
    } 
    } 
}