Python字符串嵌入变量报错:调用STS assume_role时语法错误
解决Python调用AWS STS assume_role接口的语法错误问题
错误原因
你代码里的语法错误来自RoleArn=(f"arn:aws:iam::{AccountID[account]}:role/Cloudbees_Jenkins")这部分——给f-string额外套了一层括号,导致Python无法正确解析函数参数。
修正后的代码
import boto3 # 初始化STS客户端 sts = boto3.client('sts') AccountID = ["1234567","5678912"] for account_id in AccountID: # 构造RoleArn字符串 role_arn = f"arn:aws:iam::{account_id}:role/Cloudbees_Jenkins" # 打印你期望的ARN输出 print(role_arn) # 调用assume_role接口 response = sts.assume_role( RoleArn=role_arn, RoleSessionName="learnaws-test-session" ) # 打印STS响应结果 print(response)
关键修正点
- 移除
RoleArn参数值外层的多余括号,直接将f-string作为参数传入即可 - 优化循环写法:直接遍历
AccountID列表的元素,替代range(len(AccountID))的写法,代码更简洁易读 - 补充STS客户端的初始化代码(如果原代码已有这部分可忽略),否则会出现
sts未定义的错误
注意事项
如果仅需要输出构造后的ARN字符串,单独执行print(role_arn)即可;调用assume_role会返回AWS STS的完整响应对象,包含临时凭证等信息。
内容的提问来源于stack exchange,提问作者shailysharma
相关产品推荐
相关产品推荐

