【问题标题】:Lambda NodeJS Serverless throws Error ForbiddenLambda NodeJS Serverless 抛出错误禁止
【发布时间】:2020-09-04 15:04:20
【问题描述】:

尝试将 Express NodeJS 应用程序部署到 AWS Lambda 时出现以下错误。

ServerlessError: Forbidden
      at /Users/name/.nvm/versions/node/v12.16.3/lib/node_modules/serverless/lib/plugins/aws/provider/awsProvider.js:331:27
      at runMicrotasks (<anonymous>)
      at processTicksAndRejections (internal/process/task_queues.js:97:5)

检测到问题的命令是SLS_DEBUG=1 serverless deploy

serverless.yml

service: mail-server
provider:
  name: aws
  runtime: nodejs12.16
  stage: dev
  region: ap-southeast-1
  memorySize: 128
functions:
  app:
    handler: app/app.handler
    events: 
      - http: 
          path: /
          method: ANY
          cors: true
      - http: 
          path: /{proxy+}
          method: ANY
          cors: true

我一直在关注这个教程:https://bitbucket.org/blog/deploy-an-express-js-app-to-aws-lambda-using-the-serverless-framework

以下是分配的策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1482712489000",
      "Effect": "Allow",
      "Action": [
        "iam:CreateRole",
        "iam:PutRolePolicy",
        "lambda:CreateFunction",
        "lambda:InvokeAsync",
        "lambda:InvokeFunction",
        "iam:PassRole",
        "lambda:UpdateAlias",
        "lambda:CreateAlias",
        "lambda:GetFunctionConfiguration",
        "lambda:AddPermission",
        "lambda:UpdateFunctionCode",
        "s3:ListBucket"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

【问题讨论】:

  • 这看起来像是本地操作系统错误,而不是 Lambda 中的任何内容。该文件和父目录是否存在于本地文件系统上,如果存在,权限是什么?

标签: node.js aws-lambda serverless


【解决方案1】:
  1. 如果需要将任何 Env 变量传递给函数,请先尝试检查您的代码。
  2. 尝试在完全管理员访问权限下运行您的函数,检查它是否有效(不是一个好主意,但最好调试权限问题)

{ "Version": "2012-10-17", "Statement": [ { "Action": "*", "Resource": "*", "Effect": "Allow" } ] }

3:尝试更深入地了解来自 Cloud Watch 的日志。

【讨论】:

  • 另一个错误:ServerlessError:发生错误:AppLambdaFunction - 'runtime' 的值 nodejs12.16 未能满足约束:成员必须满足枚举值集:[java8,java11,nodejs10.x,nodejs12。 x、python2.7、python3.6、python3.7、python3.8、dotnetcore2.1、go1.x、ruby2.5] 或为有效的 ARN(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:34d3b564-bac9-4849-8550-0c1b85e2ab62)。
  • 做一件事让本地机器上的代码在一个特定文件夹中安装文件夹中的所有依赖项。 Nodemoudule 文件夹必须存在。压缩文件,然后将其上传到 lambda 函数。
猜你喜欢
  • 2020-01-04
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
相关资源
最近更新 更多