我有一个无服务器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:
我尝试更改此文件的权限,但不能。有什么想法吗?
答案 0 :(得分:1)
此问题与无服务器无关,但与我在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*
我确信通过允许其他人执行文件会出现问题。但这解决了问题。
答案 1 :(得分:0)
完全相同的错误的另一个原因:
[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文件之前。