在boto3的get_policy_versions中使用通配符及策略ARN构造咨询
关于AWS策略ARN构造的详细说明
嘿,我来帮你理清AWS策略ARN的构造规则,刚好对这块比较熟悉~
首先,先明确AWS IAM策略ARN的核心格式,用代码块标注出来更清晰:
arn:aws:iam::ACCOUNT_ID:policy[PATH/PolicyName]
这里的PATH是可选部分,有没有路径直接决定了ARN的结构。
带路径的策略ARN构造
当你创建策略时指定了路径(相当于给策略分类的“文件夹”),构造ARN时必须完整包含这个路径:
- 路径可以是单级的,比如
dev/ - 也可以是多级的,比如
prod/services/data/ - 路径和策略名称之间用斜杠分隔,且路径的结尾不需要额外加斜杠(除非路径本身就是根路径,但根路径一般不用显式写)
举个实际例子:
假设你的AWS账号ID是123456789012,策略路径是engineering/backend/,策略名称是rds-admin-policy,那么对应的ARN就是:
arn:aws:iam::123456789012:policy/engineering/backend/rds-admin-policy
不带路径的策略ARN构造
如果创建策略时没有指定路径(也就是使用默认的空路径),那么ARN里就直接在policy后面跟上策略名称即可,不需要加多余的斜杠:
比如同样账号ID,策略名称是s3-read-only,对应的ARN就是:
arn:aws:iam::123456789012:policy/s3-read-only
几个需要注意的细节
- 大小写敏感:策略的路径和名称都是大小写敏感的,所以构造ARN时必须和策略的实际配置完全匹配,比如
Dev/和dev/是两个不同的路径 - 路径字符规则:IAM路径允许使用字母、数字、斜杠(/)、连字符(-)、下划线(_)、句点(.)和加号(+),不要使用其他特殊字符,否则会导致ARN无效
- 根路径特例:如果策略的路径是根路径(也就是创建时指定了
/作为路径),对应的ARN会是arn:aws:iam::ACCOUNT_ID:policy//PolicyName(注意两个斜杠),不过这种情况很少用到
内容的提问来源于stack exchange,提问作者castaway2000
相关产品推荐
相关产品推荐

