You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:35:32