Elastic Beanstalk 部署 .ebignore / .gitignore 中的文件

Elastic Beanstalk 部署 .ebignore / .gitignore 中的文件

我有一个 Drupal 应用程序,它是使用最新版本的 EB CLI 从 Mac 机器部署的,使用 Elastic Beanstalk。存储库是一个普通的 GitLab,不使用 AWS CodeCommit。

rm -rf vendor不幸的是,如果我没有在运行之前认真地运行 a eb deploy,它会将四个文件提交到存档中:

1980-01-01 00:00:00 .....           11           11  ./vendor/grasmash/yaml-expander/scenarios/symfony4/tests
1980-01-01 00:00:00 .....            9            9  ./vendor/grasmash/yaml-expander/scenarios/symfony4/src
1980-01-01 00:00:00 .....           11           11  ./vendor/grasmash/yaml-expander/scenarios/symfony2/tests
1980-01-01 00:00:00 .....            9            9  ./vendor/grasmash/yaml-expander/scenarios/symfony2/src

结果,部署失败,并出现以下错误消息eb-engine.log

2022/10/18 10:07:12.498904 [INFO] Running command /bin/sh -c /usr/bin/unzip -q -o /opt/elasticbeanstalk/deployment/app_source_bundle -d /var/app/staging/
2022/10/18 10:07:12.768789 [INFO] finished extracting /opt/elasticbeanstalk/deployment/app_source_bundle to /var/app/staging/ successfully
2022/10/18 10:07:12.778754 [ERROR] An error occurred during execution of command [app-deploy] - [StageApplication]. Stop running the command. Error: chown /var/app/staging/vendor/grasmash/yaml-expander/scenarios/symfony2/src: no such file or directory

.ebignore文件与 相同.gitignore,并且有一行

/vendor

因此从理论上讲,根本不应该添加这四个符号链接。存档中eb deploy没有其他文件或文件夹。文件的 UID、GID 和模式与其他未部署的文件相同。vendorvendor

什么原因导致了这种现象?

答案1

我刚刚在 Python 和 Django 应用程序中遇到了类似的问题,其中突然嵌套了一个文件链接node_modules- 在部署过程中未运行或使用 -no such file or directory在部署期间导致失败并显示相同的消息。

基于AWS EB CLI 文档,在存在.gitignore时不使用。我在两个文件中使用了相同的模式,因此我决定直接删除该文件,现在我的应用程序包从 327 MB 减少到只有 24 MB。部署成功。.ebignore.ebignore

.ebignore对规则的解释可能与 略有不同.gitignore,这也许可以解释运行之间的差异eb deploy

这并不能完全回答你的问题,为什么它对.ebignore你不起作用,但你可以尝试删除它,如果你所需要的已经全部覆盖的.gitignore话。

除此之外,也许你的模式需要根据以下示例进行调整:Git 文档中的 2.2 章 Git 基础 - 记录存储库更改

# only ignore the TODO file in the current directory, not subdir/TODO
/TODO

因此,也许适合您的用例的正确模式是/vendor/

相关内容