AWS RUM报Not authorized to perform sts:AssumeRoleWithWebIdentity问题排查
问题详情
- 生产环境:带负载均衡的Elastic Beanstalk SaaS生产系统
- 测试环境:无负载均衡的Elastic Beanstalk测试环境
- 同一AWS账号下,使用同一个用户创建两个AWS RUM应用监控器,分别对应测试、生产环境
- 测试环境部署对应监控代码后运行正常;切换为生产监控代码部署到生产环境时,出现权限错误:
Not authorized to perform sts:AssumeRoleWithWebIdentity - 当前操作用户已配置全权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }
- 附带浏览器错误截图:[浏览器错误截图:sts:AssumeRoleWithWebIdentity权限拒绝]
排查与解决步骤
1. 检查Elastic Beanstalk生产环境的实例角色权限
你使用的用户有全权限,但EC2实例实际使用的是实例角色(Instance Profile),而非用户权限。测试环境无负载均衡,实例角色可能默认包含RUM所需权限;生产环境带负载均衡,实例角色可能缺失sts:AssumeRoleWithWebIdentity权限。
操作:
- 登录IAM控制台,找到生产环境对应的EB实例角色(通常命名为
aws-elasticbeanstalk-ec2-role) - 为该角色添加权限策略,示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRoleWithWebIdentity", "Resource": "arn:aws:iam::你的AWS账号ID:role/生产RUM对应的Web Identity角色ARN" } ] }
也可直接附加AmazonRUMFullAccess托管策略快速验证。
2. 验证RUM Web Identity角色的信任策略
AWS RUM依赖Web Identity角色获取权限,若该角色的信任策略仅允许测试环境实体访问,生产环境请求会被拒绝。
操作:
- 进入IAM控制台,找到生产RUM监控器关联的Web Identity角色
- 编辑信任策略,确保包含生产环境EB实例角色的ARN,示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::你的AWS账号ID:role/aws-elasticbeanstalk-ec2-role" }, "Action": "sts:AssumeRoleWithWebIdentity" } ] }
3. 检查负载均衡的安全组与WAF规则
生产环境负载均衡的安全组或WAF规则可能阻止了EC2实例向STS服务(sts.amazonaws.com)的出站请求,导致权限验证失败。
操作:
- 检查EB生产环境负载均衡的安全组,确保出站规则允许HTTPS(443)访问
sts.amazonaws.com - 检查WAF规则,确认未阻止向STS服务的请求
4. 确认RUM监控代码配置
核实生产环境部署的监控代码中,appMonitorId、Web Identity角色ARN等配置是否正确对应生产环境的RUM监控器,避免误用测试环境配置。
内容的提问来源于stack exchange,提问作者Robert Benedetto
相关产品推荐
相关产品推荐

