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

时间:2020-07-01 04:46:39

标签: amazon-web-services aws-lambda

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

When using guided deploy and accepting the default options I receive a Security Constraints Not Satisfied! error. · Issue #1990 · awslabs/aws-sam-cli

但是,即使在通读了它和文档之后,我也不知道如何解决它。有人可以向我解释吗?

1 个答案:

答案 0 :(得分:4)

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

在这里,AWS SAM通知您您的应用程序未经授权配置了API Gateway 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

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

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