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

如何使用awswrangler为S3中写入的parquet对象添加标签?

实现方法

你可以通过wr.s3.to_parquet方法提供的s3_additional_kwargs参数传入S3对象标签配置,该参数会将额外参数透传给底层的S3 API调用,无需额外调用其他接口即可在写入对象时直接附加标签。

S3 API要求标签参数为URL编码的键值对字符串,格式为Key1=Value1&Key2=Value2,如果标签包含特殊字符建议通过urllib.parse.urlencode自动生成符合要求的字符串,避免手动拼接出错。

修改后的代码示例如下:

import awswrangler as wr
import boto3
import pandas as pd
from urllib.parse import urlencode

# Boto session
session = boto3.Session(profile_name='my_profile')

# Dummy pandas dataframe
d = {'col1': [1, 2], 'col2': [3, 4]}
df_pandas = pd.DataFrame(data=d)

# 定义对象标签
s3_tags = {
    "access_control": "private",
    "cost_center": "data_team",
    "data_type": "test_data"
}

wr.s3.to_parquet(
    df=df_pandas, 
    path='s3://my-bucket/path/', 
    boto3_session=session,
    # 传递额外S3参数,包括标签
    s3_additional_kwargs={
        "Tagging": urlencode(s3_tags)
    }
)

如果是写入分区表场景,上述配置会自动应用到所有生成的分区Parquet文件、元数据文件等所有该方法写入S3的对象。

如果你已经写入了文件需要事后补标签,也可以使用wr.s3.put_object_tagging方法批量给指定S3路径下的所有对象添加标签:

wr.s3.put_object_tagging(
    path="s3://my-bucket/path/",
    tags=s3_tags,
    boto3_session=session
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:27:01