6

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

4

1 回答 1

10

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

总之,您需要:

  1. 创建 Cognito 用户池
  2. 创建使用此用户池的 Cognito 身份池
  3. 让客户端登录并检索 Cognito 凭据
  4. 让客户端为所有请求发送授权标头
  5. 在您的 Lamba 函数中设置授权人

您的serverless.yml将与授权配置如下所示:

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
于 2017-06-26T15:43:09.300 回答