如何在Python中生成无单引号的AWS IAM角色ARN?
修复AWS角色ARN生成时多余单引号的问题
问题描述
我尝试在AWS中创建角色,通过如下Python代码从字典生成角色ARN列表,但输出的ARN中account_id和prefix被多余的单引号包裹,不符合AWS ARN的规范格式。
原代码:
shared ={ "mts":{ "account_id":"11111", "workbench":"aaaaa", "prefix":"zzzz" }, "tsf":{ "account_id":"22222", "workbench":"bbbbb", "prefix":"yyyy" } } role_arn = [] for x in shared: role = f"arn:aws:iam::'{shared[x]['account_id']}':role/'{shared[x]['prefix']}'_role" role_arn.append(role) print(role_arn)
当前输出(不符合预期):
["arn:aws:iam::'11111':role/'zzzz'_role", "arn:aws:iam::'22222':role/'yyyy'_role"]
期望输出:
["arn:aws:iam::11111:role/zzzz_role", "arn:aws:iam::22222:role/yyyy_role"]
解决方案
问题出在f-string的写法上——你在引用变量时额外添加了单引号,导致输出的ARN中包含了多余的单引号。只需要删除f-string中包裹shared[x]['account_id']和shared[x]['prefix']的单引号即可:
修改后的代码:
shared ={ "mts":{ "account_id":"11111", "workbench":"aaaaa", "prefix":"zzzz" }, "tsf":{ "account_id":"22222", "workbench":"bbbbb", "prefix":"yyyy" } } role_arn = [] for x in shared: # 移除变量两侧的单引号 role = f"arn:aws:iam::{shared[x]['account_id']}:role/{shared[x]['prefix']}_role" role_arn.append(role) print(role_arn)
代码解释
在Python的f-string中,{变量名}会直接解析变量的实际值,不需要额外添加单引号。原代码里的'{shared[x]['account_id']}'会把变量值和单引号一起输出,所以去掉这些单引号后,就能得到符合AWS ARN格式的正确结果。
另外,也可以用更简洁的字典遍历方式(遍历shared.values()),让代码更易读:
role_arn = [f"arn:aws:iam::{item['account_id']}:role/{item['prefix']}_role" for item in shared.values()] print(role_arn)
内容的提问来源于stack exchange,提问作者Sumanth Shetty
相关产品推荐
相关产品推荐

