Lambda函数假定角色的ARN是什么?S3桶策略NotPrincipal配置咨询
Lambda假定角色ARN与S3桶策略NotPrincipal配置
嘿,我来帮你理清楚这个问题!
首先,Lambda函数执行时使用的假定角色ARN格式是固定的,你需要把其中的会话名称替换成你的Lambda函数本身的名称,具体结构是:
arn:aws:sts::{你的AWS账号ID}:assumed-role/{Lambda角色名称}/{Lambda函数名称}
举个实际例子:如果你的AWS账号ID是123456789012,Lambda执行角色叫my-lambda-service-role,Lambda函数名为my-s3-read-function,那么对应的假定角色ARN就是:
arn:aws:sts::123456789012:assumed-role/my-lambda-service-role/my-s3-read-function
接下来给你梳理配置的关键点:
- 你已经在
NotPrincipal里加入的角色ARN(arn:aws:iam::{Account ID}:role/service-role/{Lambda role name})是正确的,这代表了IAM角色本身这个身份实体。 - 而假定角色ARN部分,之前你用的
{role session name}其实就是Lambda函数的名称——Lambda在执行时,默认会用自身的函数名作为会话名称,所以替换成你的函数名就对了。
另外要注意两个重要细节:
- 光靠桶策略的
NotPrincipal还不够,你需要确保Lambda的执行角色本身已经被授予了访问该S3桶的权限(通过IAM角色的权限策略),桶策略只是排除这个身份被拒绝,但角色本身需要有允许的权限才能正常访问。 - 如果有多个Lambda函数共用同一个执行角色,你可以选择直接用角色ARN加入
NotPrincipal(这样所有使用该角色的实体都能访问),但如果只想放行特定一个Lambda函数,用对应的假定角色ARN会更精准。
内容的提问来源于stack exchange,提问作者rooscous
相关产品推荐
相关产品推荐

