AWS - {lambda 函数} 可能未定义授权

Gun*_*t.r 7 amazon-web-services aws-lambda

我在尝试sam deploy我的 lambda 函数时遇到了这个问题。我在这里找到了相同问题的链接:

当使用引导部署并接受默认选项时,我收到安全约束不满足!错误。· 问题 #1990 · awslabs/aws-sam-cli

但是,即使通读了它和文档,我也不明白如何修复它。有人可以向我解释一下吗?

Sam*_*Sam 11

这通常发生在所有开始使用 AWS SAM Hello World 模板并在没有任何更改或遵循 AWS SAM 教程的情况下进行部署的人。(并不意味着您不应该从该模板开始或不使用 AWS SAM 教程,而是您应该添加更多配置来摆脱此消息)。

此处,AWS SAM 通知您您的应用程序在未经授权的情况下配置了 API 网关 API。当您部署相同的应用程序时,AWS SAM 会创建一个公开可用的 URL/API。

为了摆脱这个消息,你需要为你的 API 定义一些访问控制机制。

您可以使用 AWS SAM 通过在您的 AWS SAM 模板中启用授权来控制谁可以访问您的 API Gateway API。例子,

MyApi:
   Type: AWS::Serverless::Api
   Properties:
     StageName: Prod
     Auth:
       DefaultAuthorizer: MyLambdaTokenAuthorizer
       Authorizers:
         MyLambdaTokenAuthorizer:
           FunctionArn: !GetAtt MyAuthFunction.Arn
MyAuthFunction:
   Type: AWS::Serverless::Function
   Properties:
     CodeUri: ./src
     Handler: authorizer.handler
     Runtime: nodejs12.x
Run Code Online (Sandbox Code Playgroud)

上面的代码片段是名为Lambda Authorizer的授权机制的示例。还有一些其他的机制。例如,IAM 权限、API 密钥等。

您可以从以下链接中找到有关这些授权的更多信息 https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-controlling-access-to-apis.html

  • 亚马逊在其官方文档中添加了解释:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-deploying.html (2认同)