如何清理加载文件后由AWS Firehose使用的S3文件?
问题描述:
AWS Firehose在将数据复制到红移前使用S3作为间歇存储。一旦数据传输到红移,如果成功,如何自动清除它们。如何清理加载文件后由AWS Firehose使用的S3文件?
我手动删除了这些文件,它出于抱怨文件被删除的状态,我不得不再次重新创建Firehose以恢复。
使用S3规则在7天后删除这些文件将工作吗?或者有没有自动化的方式,Firehose可以删除移动到红移的成功文件。
答
与支持AWS讨论,
证实,它是安全的后24小时内或最大重试时间删除这些中间文件。
在S3 Bucket上自动删除的生命周期规则应该解决此问题。
希望它有帮助。
答
一旦你完成加载目标表,执行类似的东西(下面的代码片段是典型的shell脚本):
aws s3 ls $aws_bucket/$table_name.txt.gz
if [ "$?" = "0" ]
then
aws s3 rm $aws_bucket/$table_name.txt.gz
fi
这会检查你刚刚加载的表是否存在在s3或不会,并会放弃它。作为cronjob的一部分执行它。
如果您的ETL/ELT不是递归的,您可以将此片段写入脚本的末尾。填充表格后,它会在s3上删除文件。但是,在执行此部分之前,请确保您的目标表已填充。
如果你的ETL/ELT是递归的,你可以把它放在脚本的开头,检查并删除上一次运行中创建的文件。这将保留直到下一次运行创建的文件,并且应该是首选的,因为如果最后一次加载失败(或者需要最后一次加载的平面文件用于任何其他目的),文件将充当备份。
没有相关答案。问题是关于消防站而不是关于s3生命周期。我会建议删除它。 – Kannaiyan
问题在Firehose上,而不是如何删除S3上的文件。 Firehose使用S3作为临时存储来将数据推送到目的地。一旦这个过程完成,它永远不会清理它。我删除了一些这些文件,它抱怨文件丢失,不得不删除firehose并重新创建它来工作。这就是问题所在。 – Kannaiyan