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

Python设置AWS临时凭证报错:'list'对象无writelines属性

问题排查与解决方案

报错原因分析

AttributeError: 'list' object has no attribute 'writelines' 是因为你代码中调用writelines()方法的对象是列表,而非合法的文件句柄。比如可能误将列表赋值给了文件变量,或者打开文件时的错误操作返回了列表而非文件对象。

完整实现脚本

以下是满足你需求的Python脚本,自动完成AWS临时凭证的获取与环境变量设置:

import os
import subprocess
import json

def get_aws_temp_credentials():
    # 设置AWS_PROFILE环境变量
    os.environ['AWS_PROFILE'] = 'terraformlive'
    
    # 获取MFA信息
    mfa_device_arn = input("请输入MFA设备ARN: ")
    mfa_code = input("请输入MFA验证码: ")
    
    # 调用aws sts get-session-token获取临时凭证
    cmd = [
        'aws', 'sts', 'get-session-token',
        '--serial-number', mfa_device_arn,
        '--token-code', mfa_code
    ]
    
    try:
        result = subprocess.run(cmd, capture_output=True, text=True, check=True)
        credentials = json.loads(result.stdout)['Credentials']
    except subprocess.CalledProcessError as e:
        print(f"获取临时凭证失败: {e.stderr}")
        return
    
    # 生成export命令
    export_commands = [
        f"export AWS_ACCESS_KEY_ID={credentials['AccessKeyId']}",
        f"export AWS_SECRET_ACCESS_KEY={credentials['SecretAccessKey']}",
        f"export AWS_SESSION_TOKEN={credentials['SessionToken']}",
        f"export AWS_EXPIRATION={credentials['Expiration']}"
    ]
    
    # 打印命令供用户执行,或写入文件
    print("\n请执行以下命令设置环境变量:")
    for cmd in export_commands:
        print(cmd)
    
    # 可选:写入临时脚本文件,方便一键执行
    with open('set_aws_creds.sh', 'w') as f:
        f.writelines([cmd + '\n' for cmd in export_commands])
    print("\n已生成set_aws_creds.sh脚本,执行source set_aws_creds.sh即可生效")

if __name__ == "__main__":
    get_aws_temp_credentials()

关键注意事项

  • 确保已安装AWS CLI并配置好terraformlive profile
  • MFA设备ARN可在AWS IAM控制台获取
  • 脚本生成的环境变量仅在当前终端会话生效,若需持久化可写入~/.bashrc或~/.zshrc
  • 脚本中with open(...) as f确保了f是合法文件句柄,调用f.writelines()不会触发原报错

内容的提问来源于stack exchange,提问作者arooz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:06:38