gpt4 book ai didi

aws-lambda - 无服务器 wsgi 无法导入 werkzeug

转载 作者:行者123 更新时间:2023-12-04 11:45:28 28 4
gpt4 key购买 nike

我在将无服务器应用程序部署到 AWS 时遇到问题。在 AWS 中,日志显示:

Unable to import module 'wsgi_handler': No module named 'werkzeug'

我在我的 requirements.txt 中明确指定了 werkzeug 但似乎当我运行时 sls deploy指定的包没有放在上传到我的 S3 存储桶的 zip 文件中。

下面是我的 serverless.yml 文件的副本:
service: serverless-flask
plugins:
- serverless-python-requirements
- serverless-wsgi
- serverless-dynamodb-local
custom:
tableName: 'transactions-table-${self:provider.stage}'
wsgi:
app: app.app # entrypoint is app.app, which means the app object in the app.py module.
packRequirements: false
pythonRequirements:
dockerizePip: true
dynamodb:
stages:
- test
- dev
start:
migrate: true

provider:
name: aws
runtime: python3.6
stage: dev
region: us-east-1
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
Resource:
- { "Fn::GetAtt": ["TransactionsDynamoDBTable", "Arn" ] }
environment:
TRANSACTIONS_TABLE: ${self:custom.tableName}

functions:
app:
handler: wsgi_handler.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
resources:
Resources:
TransactionsDynamoDBTable:
Type: 'AWS::DynamoDB::Table'
Properties:
AttributeDefinitions:
-
AttributeName: transactionId
AttributeType: S
-
AttributeName: timestamp
AttributeType: S
KeySchema:
-
AttributeName: transactionId
KeyType: HASH
-
AttributeName: timestamp
KeyType: RANGE
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:custom.tableName}

这是我的requirements.tx:
boto3==1.11.17
botocore==1.14.17
Click==7.0
docutils==0.15.2
Flask==1.1.1
itsdangerous==1.1.0
Jinja2==2.11.1
jmespath==0.9.4
MarkupSafe==1.1.1
python-dateutil==2.8.1
s3transfer==0.3.3
six==1.14.0
urllib3==1.25.8
Werkzeug==1.0.0

据我所知,使用 serverless-wsgi插件应该自动处理这个包的安装,但我没有看到在 .serverless 文件夹或 serverless 创建的 zipfile 中创建了 .requirements 文件夹。

压缩包中包含的 requirements.txt 文件仅包含以下内容:
-i https://pypi.org/simple
我不确定我做错了什么,但到目前为止唯一的解决方案是拆除基础设施并重新部署一个不理想的新网址。

最佳答案

您需要手动将文件添加到包中。
在你的 serverless.yml 中,添加这个

package:
individually: true
exclude:
- ./**
include:
- requirements.txt
- <other files>
部署后,您可以从 AWS 下载打包的 zip 并验证您的文件是否在那里。

关于aws-lambda - 无服务器 wsgi 无法导入 werkzeug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60320592/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com