AWS跨账号访问失败:无权限访问资源问题排查
AWS跨账号Lambda访问父账号Route53配置错误排查
核心错误点
1. 父账号test_role信任策略的主体(Principal)配置错误
当前信任策略允许子账号的root用户假设该角色,但实际发起sts:AssumeRole请求的是子账号中Lambda的执行角色(即报错信息中的arn:aws:sts::{sub_account_id}:assumed-role/{lambda_role_name}/{lambda_name}),而非子账号root用户。因此父角色的信任策略未授权正确的请求主体,导致权限验证失败。
2. 子账号Lambda执行角色权限策略冗余
Lambda权限中的route53:*权限是针对子账号自身的Route53资源,无法直接用于访问父账号资源。跨账号访问的核心是通过sts:AssumeRole获取父账号角色的临时凭证,再用该凭证操作父账号资源,这部分冗余权限可以移除。
修正后的配置
父账号test_role信任策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{sub_account_id}:role/{lambda_role_name}" }, "Action": "sts:AssumeRole" } ] }
替换
{sub_account_id}和{lambda_role_name}为实际的子账号ID和Lambda执行角色名称。
子账号Lambda执行角色权限策略
{ "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::{parent_account_id}:role/test_role", "Effect": "Allow" } ] }
替换
{parent_account_id}为实际的父账号ID。
额外注意事项
Lambda代码中必须先调用STS的AssumeRole接口,获取父账号test_role的临时访问凭证,然后使用该凭证初始化Route53客户端,才能操作父账号的Route53资源,不能直接使用Lambda自身的角色权限发起请求。
内容的提问来源于stack exchange,提问作者user246392
相关产品推荐
相关产品推荐

