如何为Kinesis Firehose写入S3的Parquet对象添加标签适配生命周期规则
解决方案:通过Kinesis Firehose为S3对象添加标签触发生命周期规则
核心可行方案
Kinesis Firehose支持在将数据写入S3时直接为对象添加标签,无需修改现有生命周期规则,具体实现方式如下:
1. 控制台配置Firehose添加标签
在创建或更新Kinesis Firehose交付流的S3目标环节,进入高级配置的标签设置:
- 新增标签,键设为
S3Intelligent1Yr,值设为Yes - 该配置会让Firehose在生成Parquet文件并写入S3时,自动为对象打上对应标签,匹配生命周期规则的过滤条件,触发转存至INTELLIGENT_TIERING和365天后过期的动作
2. Terraform代码配置(若用基础设施即代码管理)
如果通过Terraform管理Firehose交付流,可在aws_kinesis_firehose_delivery_stream资源的s3_configuration块中添加标签配置:
resource "aws_kinesis_firehose_delivery_stream" "log_delivery" { name = "log-to-s3-parquet" destination = "s3" s3_configuration { role_arn = aws_iam_role.firehose_role.arn bucket_arn = aws_s3_bucket.lifecycle_testing.arn prefix = "logs/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/" error_output_prefix = "errors/" # 添加匹配生命周期规则的对象标签 tagging_configuration { tag { key = "S3Intelligent1Yr" value = "Yes" } } # Parquet格式序列化配置(按需补充) output_format_configuration { serializer { parquet_serializer { compression = "SNAPPY" } } } } }
3. 权限验证
确保Firehose使用的IAM角色拥有s3:PutObjectTagging权限,否则无法为S3对象添加标签。需在角色权限策略中补充:
{ "Effect": "Allow", "Action": "s3:PutObjectTagging", "Resource": "arn:aws:s3:::lifecycle-testing/*" }
验证步骤
- 等待Firehose生成并写入新的Parquet文件到目标S3桶
- 在S3控制台查看对象的标签属性,确认
S3Intelligent1Yr=Yes已成功添加 - 检查生命周期规则的执行记录,确认对象已被转存至INTELLIGENT_TIERING存储类
内容的提问来源于stack exchange,提问作者Divya
相关产品推荐
相关产品推荐

