【发布时间】:2018-05-25 04:52:45
【问题描述】:
我正在弹性 beantalk 上部署我的 API。每次启动实例时,我都需要一个特定的文件夹“temp_storage”来获得写入权限,因为这是我存储图像的位置,同时在上传到 S3 存储桶之前调整它们的大小。我还需要安装一些作曲家程序。
我的设置是
fd-api/
composer.json (These need to be installed)
temp_storage/ (This folder needs write access)
.ebextensions/
temp-folders.config
temp-folders.config
container_commands:
chown_folder:
command: "chown -R webapp /var/www/html/fd-api/temp_storage"
chmod_folder:
command: "chmod 777 /var/www/html/fd-api/temp_storage"
这是我对它应该如何工作的理解,但是当我尝试运行它时,我得到了错误:
对实例 ID“i-03f5ed1eb55f52d17”的命令执行不成功。中止操作。
未能部署应用程序。
在中止部署期间,某些实例可能已经部署了新的应用程序版本。为确保所有实例都运行相同的版本,请重新部署相应的应用程序版本。
我不知道从哪里开始调试这个?我从阅读中了解到,每次生成弹性 beanstalk 实例时,composer 文件都会自动运行,并且 .ebextension/something.config 文件中的任何命令都会运行。
不确定用户 webapp 是什么?假设它是弹性 beanstalk 实例的默认用户?
任何帮助都会很棒。
【问题讨论】:
-
/var/log/eb-activity.log 是您实例上的日志文件,您可以在其中查看日志。
-
我的猜测是当你的命令运行时
temp_storage文件夹不存在。 ElasticBeanstalk 首先将所有文件提取到暂存位置,然后在执行所有部署挂钩(例如container_commands)后将它们移动到位。正如@Zohaib 所说,/var/log/eb-activity.log应该告诉你到底发生了什么。此外,webapp是运行您的应用程序的用户。 -
@Brian 好的,你认为我应该让命令实际创建目录,然后将权限设置为新创建的文件夹吗?
-
这取决于您的平台在部署期间要做什么。如果它的行为类似于 Ruby 平台,它可能会部署到类似
/var/www/html/staging的位置,然后在运行所有挂钩后将其重命名为/var/www/html/fd-api。如果是这种情况,您需要在暂存位置创建/chown/chmod 文件夹。您能否发布来自/var/log/eb-activity.log的相关线路并告诉我们您使用的是什么EB 平台? -
这都是自定义代码,所以它只是将其放入具有所有通用设置的弹性 beanstalk 实例中。我尝试将 mkdir 命令添加到文件夹中,并且可以正常工作,但是由于某些原因,当我运行 chmod 命令时它们不起作用。我真的不知道如何在 eb-activity.log 中找到相关文件,因为它太长了,而且真的不知道如何在终端上轻松浏览它@brian
标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk