首页 > 解决方案 > 从 s3 到 athena 的 Aws Vpc 流日志

问题描述

在此处输入图像描述我打算将当前位于 s3 中的 vpc 流日志推送到 athena 中。每当 vpc 流日志将日志文件推送到 s3 时,将触发事件将数据发送到 athena 并检查是否有超过 30 天的数据将其删除。

有什么建议吗??

我的意见:使用复制命令将日志放入 redshift。

使用的查询:CREATE EXTERNAL TABLE IF NOT EXISTS vpc_flow_logs(版本 int、帐户字符串、interfaceid 字符串、sourceaddress 字符串、destinationaddress 字符串、sourceport int、destinationport int、protocol int、numpackets int、numbytes bigint、starttime int、endtime int、操作字符串, logstatus string ) PARTITIONED BY ( datedate) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION 's' TBLPROPERTIES ("skip.header.line.count"="1");

标签: amazon-web-servicesamazon-s3amazon-athenaamazon-vpc

解决方案


数据不会“存储”在 Amazon Athena 中。相反,在 Amazon Athena 中配置了一个表,该表指向位于 Amazon S3 中的数据。

当查询在 Amazon Athena 中运行时,它会自动查看该位置的所有文件

因此,无需移动或复制日志文件。只需将 Athena 表指向当前存储日志文件的位置。

如果您希望删除旧日志(只有 30 天的数据),请将Amazon S3 对象生命周期管理配置为在 30 天后删除文件。

请参阅:查询 Amazon VPC 流日志 - Amazon Athena

如果您希望经常分析数据,那么可能值得将数据加载到 Amazon Redshift。这是因为 Amazon Athena 根据从磁盘读取的数据量收费。因此,跨数据运行许多查询可能会更昂贵。或者,您可以将日志文件转换为压缩的 Parquet 格式,这使得 Athena 的查询效率更高,从而降低了从磁盘读取的数据量,从而降低了使用 Athena 的成本。但是,请从上述建议开始,并在进行更改之前查看您最终使用 Athena 的程度。


推荐阅读