如何保护AWS Lambda功能?

THp*_*ubs 3 javascript aws-lambda aws-api-gateway serverless-framework serverless-architecture

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

Zan*_*non 7

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

总之,您需要:

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

使用授权器配置,您的serverless.yml将如下所示:

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: post
          authorizer:
            arn: YOUR_USER_POOL_ARN
Run Code Online (Sandbox Code Playgroud)

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

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

event.requestContext.authorizer.claims.sub
Run Code Online (Sandbox Code Playgroud)