当前位置: 首页 > 知识库问答 >
问题:

如何将chmod x权限添加到AWS弹性Beanstalk平台挂钩?

甄文彬
2023-03-14

上下文

我正在使用Elastic Beanstek部署一个非常简单的测试应用程序。我有几个我想使用apt安装的包。我已经包含了一个01_installations.sh脚本,安装在. Platform/hooks/prebuild目录中。当我压缩我的应用程序并部署到Elastic Beanstek时,日志确认预构建脚本运行,但它没有权限。

2020/08/12 21:03:46.674234 [INFO] Executing instruction: RunAppDeployPreBuildHooks
2020/08/12 21:03:46.674256 [INFO] Executing platform hooks in .platform/hooks/prebuild/
2020/08/12 21:03:46.674296 [INFO] Following platform hooks will be executed in order: [01_installations.sh]
2020/08/12 21:03:46.674302 [INFO] Running platform hook: .platform/hooks/prebuild/01_installations.sh
2020/08/12 21:03:46.674482 [ERROR] An error occurred during execution of command [app-deploy] - [RunAppDeployPreBuildHooks]. Stop running the command. Error: Command .platform/hooks/prebuild/01_installations.sh failed with error fork/exec .platform/hooks/prebuild/01_installations.sh: permission denied  

问题

我的理解是,权限被拒绝是因为我没有添加chmod x以使.sh文件可执行。正如有关平台挂钩的 AWS 文档所述:“使用 chmod x 对挂钩文件设置执行权限。(https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html)。我的问题是:我该怎么做?

我只是将. sh文件放在目录中。我不会从其他任何地方调用它。我是否错过了一个简单的步骤?AWS留档让它看起来应该很简单。

以前的尝试

我尝试过的事情:

    < li >添加。ebextensions < ul > < li >尝试:创建一个< code >。< code >中的config文件。ebextensions目录,下面的命令将执行。具有chmod x权限的sh文件。 < li >结果:出现相同的错误。弹性豆茎日志并不表明< code >。config已被处理。
container_commands:
    01_chmod1:
        command: "chmod +x .platform/hooks/prebuild/01_installations.sh"
  • 尝试:根据AWS用户的建议(下面的论坛链接),将. sh文件更改为“chmod x01_installations.sh”。删除. eb扩展
  • 结果:发生相同的错误。
[RunAppDeployPreBuildHooks]. Stop running the command. Error: Command .platform/hooks/prebuild/chmod +x 01_installations.sh failed with error fork/exec .platform/hooks/prebuild/chmod +x 01_installations.sh: permission denied 

我在这里回顾了这些想法,但没有一个真正包含足够完整的示例:

    < Li > https://forums . AWS . Amazon . com/thread . jspa?messageID=942515 < Li > https://github . com/AWS/elastic-beanstalk-roadmap/issues/15

共有3个答案

皇甫浩壤
2023-03-14

这在更新权限提交更改后对我有效。

此外,.config 文件中的命令将不起作用,因为这些命令将运行预部署,因此无法找到.sh文件的路径。

司空繁
2023-03-14

通常在压缩部署包之前,在本地工作站上设置权限。

但是,如果您想在EB实例上这样做,那么您不能使用< code>container_commands来实现。原因是< code>container_commands在< code>prebuild之后执行。相反,您应该尝试使用< code >命令:

预生成文件在运行任何配置文件的命令部分中找到的命令之后运行,并在运行 Buildfile 命令之前运行。

顾宏朗
2023-03-14

确保您的文件在git中可执行

chmod +x path/to/file
git update-index --chmod=+x path/to/file

参考 来自 如何在GIT中为文件添加chmod权限?

 类似资料:
  • 我在使用 aws 的 beanstalk 和运行我的网络应用程序时遇到了问题。 我已经按照我上一个托管账户的方式设置了所有的东西,但是当我试图运行这个脚本时,在var/www/cgi-bin/server.pl的cgi-bin中出现了一个权限错误。 一定有什么地方我需要改变才能运行这个。 我已将权限设置为 755 到 cgi-bin 和 sever.pl 以及httpd中。我添加了conf 选项E

  • 我在AWS托管了一个站点。我已经为弹性Beanstalk创建了一个RDS DB实例。在我的laravel应用程序的config/database.php文件中,我将数据库连接配置为: 现在,当我尝试通过SSHing运行到EC2实例时,我得到以下错误: SQLState[HY000][1049]未知数据库“MydBindEntifier”(SQL:select*from) “mydbidentifi

  • 有没有办法使用现有的Amazon EC2实例创建Elastic Beanstek环境?

  • 我正在尝试通过亚马逊弹性豆子(使用本教程)部署我的django应用程序,但收到以下错误。 错误:Elastic Beanstalk找不到任何平台。确保您拥有访问Elastic Beanstalk所需的权限。 我该如何解决这个问题? 谢谢

  • 我目前正在部署Django 这是我的git仓库:https://github.com/ujin43255252/davidgram

  • 我正在工作一个AWS弹性Beanstalk应用程序,上传文件到AWS S3桶。Beanstalk应用程序是一个.NET Core Web API应用程序,我遵循了本指南(http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html),并且在磁盘上有一个凭据文件,用于本地开发,其中有我的共享访