带有 Django 的 AWS Beanstalk:eb create 抱怨未知配置设置“StaticFile”
Posted
技术标签:
【中文标题】带有 Django 的 AWS Beanstalk:eb create 抱怨未知配置设置“StaticFile”【英文标题】:AWS Beanstalk with Django: eb create complains about unknown config setting 'StaticFile' 【发布时间】:2020-09-16 13:42:13 【问题描述】:我正在尝试使用 Elasticbeanstalk 部署 django 应用程序,遵循此设置
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html
还有这个
https://www.1strategy.com/blog/2017/05/23/tutorial-django-elastic-beanstalk/
在第一次尝试时,在 .ebextension/django.config 中,我有
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "my_django_path_name.settings"
PYTHONPATH: "$PYTHONPATH"
"aws:elasticbeanstalk:container:python":
WSGIPath: "my_django_path_name/wsgi.py"
StaticFiles: "/static/=www/static/"
当调用eb create
时,它会抱怨
ERROR: ServiceError - Configuration validation exception: Invalid option specification (Namespace:
'aws:elasticbeanstalk:container:python', OptionName: 'StaticFiles'): Unknown configuration setting.
于是我取出了StaticFiles部分,最终变成了
option_settings:
"aws:elasticbeanstalk:container:python":
WSGIPath: "my_django_path_name/wsgi.py"
它仍然抱怨未知的 OptionName:StaticFiles
然后我使用了https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-container.html#python-namespaces 中的示例并稍作调整
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: production.settings
aws:elasticbeanstalk:container:python:
WSGIPath: ebdjango.wsgi:application
NumProcesses: 3
NumThreads: 20
但它仍然抱怨同样的事情。
我不知道在哪里读取 StaticFiles 选项名称。它在 .config 文件中不存在。它是缓存在某个地方还是什么地方?
【问题讨论】:
你确定这是唯一定义它的地方吗?也许设置的某处有重复? 我只创建了一个.ebextension
文件夹。如果 bean stalk 确实在搜索该文件夹以及其中的所有 .config
文件,那么这应该是唯一的地方
如果您手动创建 zip 部署并使用 EB 控制台创建 env,错误是否仍然存在?
好的,我明白了..打开调试后,我意识到 eb cli 正在从我的 git 中读取内容......我还没有将我的更改提交给 git.. ...哇
如果它现在可以工作,我可以根据 cmets 提供答案以供将来参考吗?
【参考方案1】:
根据 cmets 中的讨论,发现问题是由于 eb
正在部署 git 的旧版本,而不是本地的、已更正的版本申请。
解决方案是将更改推送到 git,以便部署新版本。
【讨论】:
【参考方案2】:这里有两个问题:
-
正如上面提到的@Marcin,
eb
CLI 从git
读取文件,因此您只需在运行eb deploy
之前将更改提交到本地git
存储库。无需推送到您的远程仓库。
您似乎在 EB 中使用新的Amazon Linux 2
平台,因此从其功能中删除了提供静态文件。因此,您必须通过 S3 存储桶在外部为实例提供静态文件。
来源:
Amazon Linux 2 平台限制与 Amazon Linux AMI 平台(之前的 Amazon Linux 2)相比,Amazon Linux 2 平台缺少一些功能:提供静态文件和自定义平台
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.migration-al.html
不支持静态文件选项仅在 Amazon Linux AMI Python 平台版本上支持使用
aws:elasticbeanstalk:container:python:staticfiles
命名空间配置静态文件。
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-container.html#python-namespaces
【讨论】:
是的,我知道我不能像以前那样提供静态文件。现在我不担心这个。我需要迁移才能运行,但它仍然没有运行 好。我最近经历了所有这些,请查看我对您的新问题的评论,看看我是否可以提供帮助。以上是关于带有 Django 的 AWS Beanstalk:eb create 抱怨未知配置设置“StaticFile”的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic BeanStalk SignatureDoesNotMatch
AWS Elastic Beanstalk 中的 mysqlclient 安装错误
AWS Elastic Beanstalk 上禁止使用 Django 403
如何使 django 项目与 AWS Beanstalk 兼容?