更新 AWS Elastic Beanstalk 解决方案堆栈名称

Posted

技术标签:

【中文标题】更新 AWS Elastic Beanstalk 解决方案堆栈名称【英文标题】:Update AWS Elastic Beanstalk solution stack name 【发布时间】:2019-05-01 13:52:19 【问题描述】:

我有一个带有以下 Elastic Beanstalk 环境的 Cloudformation 模板:

Resources:
  BeanstalkEnvironment1:
    Type: AWS::ElasticBeanstalk::Environment
    Properties:
      ApplicationName: Application1
      Description: ignored
      EnvironmentName: Environment1'
      SolutionStackName: '64bit Amazon Linux 2017.03 v2.5.0 running Python 3.4'

我的主要目标是将环境的 Python 版本从 3.4 更新到 3.6。我能够使用以下命令更新解决方案堆栈名称(取自 this answer)

aws elasticbeanstalk update-environment --solution-stack-name "64bit Amazon Linux 2018.03 v2.7.6 running Python 3.6" --environment-name "Environment1"

但是,如果我将现有模板更新为新的解决方案堆栈名称,我将无法使用现有模板进行后续更新,因为我得到“Cannot update a stack when a custom-named resource requires replacing”。如果我保留原始版本,它可以工作,但我希望让正在运行的平台与模板保持同步。

有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。这似乎是 Elastic Beanstalk 和 CloudFormation 的限制。在文档 (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html) 中,SolutionStackName 的更新显示为 Update requires: Replacement

如果您每次更改SolutionStackName 时都更改EnvironmentName,它应该可以正常工作。

【讨论】:

以上是关于更新 AWS Elastic Beanstalk 解决方案堆栈名称的主要内容,如果未能解决你的问题,请参考以下文章

更新 AWS Elastic Beanstalk 部署的 Webapp 使用的数据

AWS Elastic Beanstalk 上的 Celery 配置问题 - “进程没有配置更新”

在 Elastic Beanstalk 和 AWS Lambda 上更新 nodejs API

更改 IAM 用户密钥时如何更新 Elastic Beanstalk 环境变量中的 AWS 凭证?

如何从 AWS Elastic BeanStalk 获取更新的“上传”文件夹?

AWS Elastic Beanstalk:如何更改节点命令?在最近的更新中删除了容器选项?