在 Elastic beanstalk 上部署因 cloudformation 语法错误而失败

Posted

技术标签:

【中文标题】在 Elastic beanstalk 上部署因 cloudformation 语法错误而失败【英文标题】:Deployment on Elastic beanstalk fail on cloudformation syntax error 【发布时间】:2021-10-29 19:45:45 【问题描述】:

我有一个通过 GitLab CI 部署到 Elastic beanstalk 的 drupal 网站。 直到几天前一切正常。 我显然没有收到任何错误,但似乎没有文件上传到我的 EC2 实例。 在深入挖掘之后,我能找到的唯一错误是在 eb-cfn-init.log 上

+ /bin/bash /tmp/ebbootstrap.sh 'https://cloudformation-waitcondition-eu-west-3.s3.eu-west-3.amazonaws.com/arn:aws:cloudformation:eu-west-3:XXXXX:stack/XXXXXX-stack/8ccae$ 
/tmp/ebbootstrap.sh: line 1: syntax error near unexpected token `newline'
/tmp/ebbootstrap.sh: line 1: `<?xml version="1.0" encoding="UTF-8"?>'
+ RESULT=2

这个cloudformation文件似乎不正确,但是这个文件是如何生成的? 此外,如果我创建一个全新的环境,完全相同的部署脚本正在正确运行(所有文件都正确部署到我的实例。问题仅在我尝试更新我的实例上的文件时出现。

我有点迷失了,因为我不明白我的代码的哪一部分会产生这个问题。

有什么想法吗?

谢谢。

【问题讨论】:

你的模板代码是什么? 实际上我不使用任何模板(我不知道)。我只是使用 gitLabCI 在我的环境中运行 eb deploy 命令。我在 .ebextensions 和 .elasticbeanstalk 文件夹中有几个 .config 文件,但没什么特别的。 【参考方案1】:

好的,我终于弄清楚了我的问题所在。 事实上,几周前我为我的 VPC 创建了一个端点(让 lambda 访问一些 S3 存储桶)......并且应用于此端点的策略是阻止部署 IAM 角色访问 S3 以获取新发布的文件。 /tmp/ebbootstrap.sh 文件显示访问被拒绝错误,这使我更仔细地了解为什么我在这里遇到了一些错误。

【讨论】:

以上是关于在 Elastic beanstalk 上部署因 cloudformation 语法错误而失败的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应

在 Elastic Beanstalk 上部署 Docker 环境

在 Elastic Beanstalk 上部署 Wordpress 的多个问题

在 Elastic Beanstalk 上部署 Pyramid 应用程序

在 Elastic Beanstalk 上部署 WordPress?

Elastic Beanstalk 未部署在所有实例上