【问题标题】:AWS Beanstalk with Django: eb create complains about unknown config setting 'StaticFile'带有 Django 的 AWS Beanstalk:eb create 抱怨未知配置设置“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 提供答案以供将来参考吗?

标签: python django amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

根据 cmets 中的讨论,发现问题是由于 eb 正在部署 git 的旧版本,而不是本地的、已更正的版本申请。

解决方案是将更改推送到 git,以便部署新版本。

【讨论】:

    【解决方案2】:

    这里有两个问题:

    1. 正如上面提到的@Marcin,eb CLI 从git 读取文件,因此您只需在运行eb deploy 之前将更改提交到本地git 存储库。无需推送到您的远程仓库。
    2. 您似乎在 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

    【讨论】:

    • 是的,我知道我不能像以前那样提供静态文件。现在我不担心这个。我需要迁移才能运行,但它仍然没有运行
    • 好。我最近经历了所有这些,请查看我对您的新问题的评论,看看我是否可以提供帮助。
    猜你喜欢
    • 2014-08-24
    • 2018-06-13
    • 1970-01-01
    • 2020-12-09
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多