7

我想使用 API Gateway 的标准 API Keys 功能。如果我使用标准 cloudformation,可以通过将方法的属性 ApiKeyRequired 设置为 true 来实现。我怎样才能用 SAM 做到这一点?

我尝试使用 swagger 但这似乎不起作用:

    swagger: "2.0"
    info:
      title: !Ref AWS::StackName

    paths:
      "/machines/{resourceid}":
        get:
          parameters: 
            - name: resourceid 
              in: path 
              type: string 
              required: true 
          x-amazon-apigateway-integration:
            httpMethod: POST
            type: aws_proxy
            uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyLambda.Arn}/invocations
            responses: {}
          security:
            - authorizer: []

    securityDefinitions:
      authorizer:
        type: apiKey
        name: Authorization
        in: header

有什么建议么?

4

1 回答 1

4

以下招摇定义有效:

  DefinitionBody:
    swagger: "2.0"
    info:
      title: !Ref AWS::StackName
    x-amazon-apigateway-api-key-source : "HEADER"
    paths:
      "/machines/{resourceId}":
        get:
          parameters: 
            - name: resourceId 
              in: path 
              type: string 
              required: true 
          x-amazon-apigateway-integration:
            httpMethod: POST
            type: aws_proxy
            uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MessagingServiceTestHandler.Arn}/invocations
            responses: {}
          security:
            - api_key: []                      
    securityDefinitions:
      api_key:
        type: "apiKey"
        name: "x-api-key"
        in: "header"

api 密钥头的名称必须是x-api-key而不是标准的授权头。

于 2018-05-15T08:23:49.547 回答