如何保护AWS Lambda功能?

时间:2017-06-26 14:04:07

标签: javascript aws-lambda aws-api-gateway serverless-framework serverless-architecture

我有一个简单的Lambda函数,可以通过SES发送电子邮件。我可以使用带有所需数据的POST请求来调用它,它会发送一封电子邮件。我的问题是,我可以用什么方法来保护这个功能?目前,任何人都可以调用该端点并使用任何数据执行该功能。

1 个答案:

答案 0 :(得分:7)

您需要为API网关设置授权程序。这个tutorial是一个很好的起点。

总之,您需要:

  1. Create a Cognito User Pool
  2. Create a Cognito Identity Pool that uses this User Pool
  3. Make the client to log in and retrieve Cognito credentials
  4. Make the client to send authorization headers for all requests
  5. Set an authorizer in your Lamba function
  6. 您的 serverless.yml 将使用 authorizer 配置显示如下:

    functions:
      hello:
        handler: handler.hello
        events:
          - http:
              path: hello
              method: post
              authorizer:
                arn: YOUR_USER_POOL_ARN
    

    您不需要限制为Cognito授权人。您可以使用为Google+,Facebook等配置授权程序

    此设置意味着Lamba功能仅由经过身份验证的用户触发,您可以通过检查event对象来识别用户ID:

    event.requestContext.authorizer.claims.sub