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

如何将EC2 describe_instances返回的标签正确写入CSV?

解决EC2实例标签导出为指定格式CSV的问题

问题根源

原代码存在两个核心问题:

  • write_csv函数仅创建了CSV写入对象,但未执行任何实际写入操作
  • 循环逐个写入单个标签的键值对,导致输出为每行一组键值,而非期望的「表头为标签键、单行对应值」的格式

修正后的代码

import csv
import boto3

# 初始化boto3会话与EC2客户端(按需添加凭证配置)
session = boto3.Session()
client = session.client('ec2')

def write_tags_to_csv(tags, filename):
    # 提取所有标签键作为CSV表头
    headers = [tag['Key'] for tag in tags]
    # 提取所有标签值作为单行数据
    values = [tag['Value'] for tag in tags]
    
    # 一次性完成文件写入
    with open(filename, 'w', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow(headers)  # 写入表头行
        writer.writerow(values)   # 写入值行

# 获取目标实例的详情
response = client.describe_instances(
    Filters=[
        {
            'Name': 'instance-id',
            'Values': [
                'i-xxxxxxxxx',  # 替换为你的实际实例ID
            ],
        },
    ],
)

# 提取第一个实例的标签集合
tags = response['Reservations'][0]['Instances'][0]['Tags']

# 生成CSV报告
write_tags_to_csv(tags, 'ec2_tags_report.csv')

代码说明

  • 先从标签列表中批量提取Key和Value,分别组成表头和数据行
  • 一次性打开文件完成写入,避免多次追加写入的格式混乱
  • 指定encoding='utf-8',避免中文等特殊字符出现乱码问题

最终输出格式

生成的CSV内容结构如下:

tag1tag2tag3
value1value2value3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:01:23