是否可以在“serverless.yml”中设置请求授权。无服务器1.0.0-beta.1.1的文件?

时间:2016-08-12 13:54:43

标签: amazon-web-services yaml aws-api-gateway serverless-framework

我刚尝试Serverless的版本.1.0.0-beta.1.1,看起来很有希望。

我希望使用AWS_IAM验证请求。

我可以使用AWS Gateway API控制台,并将每个方法请求从none更改为AWS_IAM。手工,我可以使它工作。

但是,我宁愿更改无服务器服务中的serverless.yml文件。

我尝试添加authorizationType字段,如下所示:

- http:
      path: greet
      method: get
      authorizationType: AWS_IAM

但它没有更新API网关的授权设置,仍然接受未经授权的请求。

是否可以将serverless.yml文件设置为使用AWS_IAM

2 个答案:

答案 0 :(得分:2)

在无服务器1.0.0-RC2中,您可以按如下方式设置authorizationType

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get    

resources:
  Resources:
    ApiGatewayMethodHelloGet:
      Properties:
        AuthorizationType: AWS_IAM 

答案 1 :(得分:1)

查看以下链接,了解我在验证帮助中找到的最接近的链接:

https://github.com/serverless/serverless/blob/85f4084e6b0fd4a6d763ace8cd0db82817bbc712/lib/plugins/aws/deploy/compile/events/apiGateway/README.md#http-setup-with-custom-authorizer

我没有使用过AWS_IAM,但这里是我如何定义CUSTOM身份验证,它应该指示整体格式。

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get
          authorizer:
            arn: arn:aws:lambda:us-east-1:xxxxxx:function:jwtAuthorize
            resultTtlInSeconds: 0
            identitySource: method.request.header.Authorization
            identityValidationExpression: JWT [^\.]+\.[^\.]+\.[^\.]+

因此,我认为您需要添加authorizer部分。我无法对此进行测试,但请告诉我这是否有效:

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get
          authorizer:
            authorizationType: AWS_IAM