如何向Elastic Beanstalk部署应用?部署示例应用遇权限及状态问题
AWS Elastic Beanstalk 部署示例应用遇503及环境Pending问题解决
问题现象
- 通过EB CLI部署示例应用,初始化与创建完成后返回503错误,核心报错:
Environment health has transitioned from Pending to Warning. Initialization completed 28 seconds ago and took 3 minutes. There are no instances. Unable to assume role "arn:aws:iam::<number>:role/aws-elasticbeanstalk-service-role". Verify that the role exists and is configured correctly. - 目标IAM角色
aws-elasticbeanstalk-service-role已存在(此前创建);手动部署时控制台返回Successfully launched environment:,但环境始终处于Pending状态,访问DNS显示「无网络」
排查修复步骤
1. 修复服务角色的信任关系
EB服务无法假设角色,大概率是信任策略配置错误:
- 进入IAM控制台,找到
aws-elasticbeanstalk-service-role角色 - 切换至「信任关系」标签,编辑策略,确保内容为:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticbeanstalk.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "elasticbeanstalk" } } } ] } - 保存后重新尝试部署
2. 验证角色权限配置
- 确认角色未设置权限边界,或权限边界允许Elastic Beanstalk的全量操作
- 确保角色已附加
AWSElasticBeanstalkService托管策略(EB服务角色的默认必要权限)
3. 排查实例启动失败原因
环境无实例启动,需检查底层资源配置:
- 确认环境使用的实例配置文件(Instance Profile)存在且关联了正确的IAM角色
- 查看CloudWatch的EC2实例启动日志,排查是否存在子网配置错误、安全组限制、实例类型配额不足等问题
4. 清理异常环境后重新部署
若环境长期Pending,可能是资源残留导致:
- 执行
eb terminate <环境名称>终止异常环境 - 删除本地项目目录下的
.elasticbeanstalk配置文件夹 - 重新执行
eb init和eb create,使用默认选项完成部署
内容的提问来源于stack exchange,提问作者Dark Furby
相关产品推荐
相关产品推荐

