elasticbeanstalk不会设置虚拟路径

时间:2018-01-04 21:02:10

标签: amazon-elastic-beanstalk

我正在尝试新的AWS Elastic Beanstalk控制台ui。我现在遇到一个问题,就是在ui上设置虚拟路径

基本上我将所有静态文件(包括index.html)放在我的包中的文件夹ui中。

这是捆绑结构:

/ui
/ui/favicon.ico
/ui/index.html
/ui/static
/ui/static/css/...
/ui/static/js/...
/ui/static/media/...
package.json
yarn.lock
app.js // this is the node api and it works

访问我的[http://public]/api/alive时,API有效。我的目的是将虚拟目录设置为从bundle文件夹ui提供静态文件。

当节点api没有匹配任何内容时,它会向下发送index.html。这有效:[http://public]/。我得到index.html

然后浏览器请求静态文件/static/js/main[hash].js。这有效,但问题是我甚至无法设置任何虚拟路径来玩。我需要在AWS上将浏览器请求/static映射到/ui/static

elasticbeanstalk错误:

enter image description here

/ static /:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' / static /'):未知的配置设置。 static /:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' static /'):未知的配置设置。 / assets:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' / assets'):未知的配置设置。 static:无效的选项规范(Namespace:' aws:elasticbeanstalk:container:python:staticfiles',OptionName:' static'):未知的配置设置。

无论我把斜杠放在哪里,它都不会起作用:

enter image description here

我指定的所有路径都存在于我已部署的应用包中,除了/static/assets之外,只是为了尝试不同的东西。

我不确定这是否是新UI上的错误。如果有人遇到同样的问题,请告诉我。

2 个答案:

答案 0 :(得分:2)

在尝试使用 Amazon Linux 2 Python 3.7 Django应用程序提供静态内容时,我发现了这个问题;但是,我认为对于不同的平台,答案是相同的。

阅读文档here,我发现此链接:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-staticfiles.html

表示这样的.config示例文件

示例.ebextensions/static-files.config

option_settings:
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /html: statichtml  <-- path/to/your/static/dir/ (added by Nick)
    /images: staticimages

因此,名称空间似乎从aws:elasticbeanstalk:container:python:staticfiles更改为aws:elasticbeanstalk:environment:proxy:staticfiles。对于平台不可知的来说,这似乎是一个更通用的反向代理,这很有意义。做好AWS。

当我尝试这样做时,惊奇地文档是最新的并且可以正常工作。

答案 1 :(得分:0)

只是详细说明尼克的回答 - 此处的 /html/images 将对应于您的环境期望接收文件的路径。

因此,如果您打开浏览器控制台的网络选项卡并看到如下内容: 404 GET http://your.app.com/static/admin/css/base.css

那么您可能希望路径为 /static 而不是 /html

statichtml 将对应于您的 eb 实例上静态文件的位置。

因此,如果您运行 eb ssh 然后运行 ​​manage.py collectstatic 并获得如下输出:

You have requested to collect static files at the destination
location as specified in your settings:

    /var/app/current/static

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes

那么您可能希望值​​为 /static/