如何使用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
相关产品推荐
相关产品推荐

