AWS CloudFormation部署Elastic Beanstalk Java应用资源创建失败求助
问题根因
- 核心原因:你在模板中创建了供EC2使用的IAM角色(MyInstanceRole)和实例配置文件(MyInstanceProfile),但未将该实例配置文件关联到Elastic Beanstalk环境的启动配置中。Elastic Beanstalk启动EC2实例时需要实例配置文件授予对应的权限,缺少该配置会导致EC2无法初始化,最终环境直接进入Terminated状态。
- MyInstanceProfile创建失败是次级问题:由于sampleEnvironment先触发创建失败,CloudFormation启动回滚流程,直接取消了还在创建中的MyInstanceProfile任务。
解决方案
修改你的CloudFormation模板,在sampleConfigurationTemplate的OptionSettings配置中新增实例配置文件关联项,修改后的配置片段如下:
"sampleConfigurationTemplate": { "Type": "AWS::ElasticBeanstalk::ConfigurationTemplate", "Properties": { "ApplicationName": { "Ref": "sampleApplication" }, "Description": "AWS ElasticBeanstalk Sample Configuration Template", "OptionSettings": [ { "Namespace": "aws:autoscaling:asg", "OptionName": "MinSize", "Value": "2" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "MaxSize", "Value": "6" }, { "Namespace": "aws:elasticbeanstalk:environment", "OptionName": "EnvironmentType", "Value": "LoadBalanced" }, // 新增以下配置,关联你创建的实例配置文件 { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": { "Ref": "MyInstanceProfile" } } ], "SolutionStackName": "64bit Amazon Linux 2 v3.2.5 running Corretto 11" } }
额外检查项
如果修改后仍部署失败,可以逐一排查以下配置:
- 确认名称为
bucket-elasticbeanstalk-{AWS区域}的S3桶真实存在,且存储了helloworld-0.0.1-SNAPSHOT.jar文件,部署账号拥有该文件的读取权限 - 确认你使用的SolutionStack名称在部署的AWS区域可用,可执行AWS CLI命令
aws elasticbeanstalk list-available-solution-stacks查询对应区域支持的运行栈版本,替换为可用的Corretto 11栈即可
内容的提问来源于stack exchange,提问作者Hamid
相关产品推荐
相关产品推荐

