【问题标题】:Permission issue when deploying Serverless Python app部署无服务器 Python 应用程序时的权限问题
【发布时间】:2020-11-13 23:41:42
【问题描述】:

我有一个无服务器 Python 应用程序,我正在尝试使用 sls deploy 来部署它。 serverless.yml 如下。

service: update-register

provider:
  name: aws
  runtime: python3.8
  profile: haumi
  stage: ${opt:stage, 'staging'}
  environment: ${file(environment.yml):${self:provider.stage}}
  region: ${self:provider.environment.REGION}

  iamRoleStatements:
    # para poder leer y escribir en el bucket
    - Effect: "Allow"
      Action:
        - "sqs:SendMessage"
      Resource: "*"

functions:
  update:
    handler: handler.update
    events:
      - sqs: ${self:provider.environment.AWS_SQS_QUEUE}

处理程序文件是这样的:

def update(event, context):
    print("=== event: ", event)

但是,当我尝试部署和触发更新功能时,AWS Cloudwatch 中出现以下错误

[ERROR] PermissionError: [Errno 13] Permission denied: '/var/task/handler.py'
Traceback (most recent call last):
  File "/var/lang/lib/python3.8/imp.py", line 300, in find_module
    with open(file_path, 'rb') as file:

我尝试更改此文件的权限,但我不能。有什么想法吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless


    【解决方案1】:

    这个问题与 Serverless 无关,但与我在 Ubuntu 18.04 中挂载的 NTFS 分区的权限有关。

    tl;博士 将挂载分区的 /etc/fstab 更改为

    UUID=8646486646485957 /home/Data      ntfs    defaults,auto,umask=002,uid=1000,gid=1000 0       0
    

    使用 id -u 获取 uid 和 gid。

    详细解释

    我发现在 NTFS 分区中,您不能只使用 chmod 更改文件权限。您需要在安装分区时配置掩码。由于我在启动 Ubuntu 时安装了分区,因此所需的更改在我的 fstab 文件中。 umask 参数决定了哪些权限不能设置。你可以找到更多关于这个参数here的信息。

    执行此重新启动后。您会发现这些文件具有不同的权限。在我的情况下,允许我部署的代码工作的权限是

    -rwxrwxr-x 1 user group   59 jul 24 00:47 handler.py*
    

    我确信允许其他人执行该文件存在问题。但这解决了问题。

    【讨论】:

      【解决方案2】:

      导致完全相同错误的另一个原因:

      [ERROR] PermissionError: [Errno 13] Permission denied: '/var/task/<my_lambda_python_file>.py'
      Traceback (most recent call last):
        File "/var/lang/lib/python3.8/imp.py", line 300, in find_module
          with open(file_path, 'rb') as file:
      

      我正在使用 Atlassian Bamboo 部署 Lambda,而 Bamboo 似乎弄乱了构成 lambda 的文件的权限:

      -rw-r-----@  1 <user>  <group>   2.5K 19 Nov 18:10 <my_lambda_python_file>.py
      

      我通过添加到 Bamboo 脚本解决了这个问题:

      chmod 755 <my_lambda_python_file>.py
      

      就在将代码打包成 zip 文件之前。

      【讨论】:

        猜你喜欢
        • 2014-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-25
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多