如何在FME中使用boto3为AWS S3对象添加标签?
FME为S3单个对象添加标签操作指南
前置准备
- 确保FME关联的Python环境已安装AWS SDK for Python(boto3):打开FME对应的Python执行路径,运行
pip install boto3即可完成安装 - 提前配置AWS身份凭证:可通过AWS CLI生成
~/.aws/credentials凭证文件,生产环境不建议在代码中硬编码访问密钥 - 确认所用IAM身份拥有
s3:PutObjectTagging接口的调用权限
方法1:Python Caller实现打标签(推荐)
在FME工作流的S3文件上传节点后接入Python Caller转换器,将以下代码写入Python Caller的代码编辑区:
import fme import fmeobjects import boto3 def add_s3_object_tag(feature): # 从FME要素属性中读取对应参数,可根据实际业务调整 bucket_name = feature.getAttribute('s3_bucket_name') object_key = feature.getAttribute('s3_object_key') # 按业务需求自定义标签键值对 tag_set = [ {'Key': 'project_id', 'Value': feature.getAttribute('project_id')}, {'Key': 'process_time', 'Value': feature.getAttribute('fme_run_time')}, {'Key': 'source', 'Value': 'FME_automation'} ] s3_client = boto3.client('s3') # 调用S3原生接口为单个对象添加标签 s3_client.put_object_tagging( Bucket = bucket_name, Key = object_key, Tagging = {'TagSet': tag_set} ) # 打标签完成后添加状态标识 feature.setAttribute('s3_tagging_status', 'success')
配置说明:
- 提前在工作流中为上游要素补充
s3_bucket_name、s3_object_key以及自定义标签所需的业务属性 - 如果需要在上传文件时直接携带标签,可在调用S3上传接口(
put_object)时直接传入Tagging参数,无需单独调用打标签接口
方法2:自定义转换器封装(复用场景可选)
如果需要在多个工作流中复用打标签能力,可将上述逻辑封装为自定义转换器:
- 新建自定义转换器,定义输入参数:存储桶名称、对象键、标签键值对集合
- 内置Python Caller执行打标签逻辑
- 输出成功、失败两个端口,方便后续做分支异常处理
注意事项
- S3单个对象最多支持10组标签,标签键最长128字符、值最长256字符,不要超出接口限制
- 分片上传的大文件需要在分片合并完成后再调用打标签接口,否则标签会不生效
内容的提问来源于stack exchange,提问作者Victoria
相关产品推荐
相关产品推荐

