OpenSearch推送告警到Amazon SNS出现sts:AssumeRole 403错误如何解决?
问题根因
你当前提供的是Test-OpenSearch-Role的权限策略,权限策略仅用于规定该角色本身可调用的AWS服务范围,报错的核心原因是你缺少该角色的信任策略配置:信任策略的作用是规定哪些身份/服务有权限切换(AssumeRole)到当前角色。
报错中出现的arn:aws:sts::xxxxxxxxxxxx:assumed-role/cp-sts-grant-role/swift-us-west-2-prod-xxxxxxxxxxxx是AWS OpenSearch服务托管的内部执行身份,专门用于触发告警时调用用户配置的自定义角色,你不需要单独为该身份配置权限,仅需在你创建的Test-OpenSearch-Role的信任策略中放行OpenSearch服务即可。
修复步骤
- 第一步:打开IAM控制台,找到你创建的
Test-OpenSearch-Role角色,切换到「信任关系」标签页,点击「编辑信任策略」 - 第二步:替换原有信任策略为如下内容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
注意:如果你的OpenSearch域部署在AWS中国大陆区域,Principal的Service值需要替换为
es.amazonaws.com.cn
- 第三步:保存信任策略后,等待2-3分钟策略生效,重新触发告警测试即可。
可选优化(生产环境建议配置)
你当前的权限策略给了全资源访问权限,仅适合测试场景,生产环境建议缩小权限范围:将sns:Publish的Resource替换为你实际使用的SNS主题ARN,同时删除多余的sts:AssumeRole权限(该角色本身不需要切换到其他角色的权限,之前的配置属于冗余项),优化后的权限策略参考:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-west-2:xxxxxxxxxxxx:你的SNS主题名称" } ] }
内容的提问来源于stack exchange,提问作者Jake P
相关产品推荐
相关产品推荐

