amazon-web-services - 从 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 ( date
date) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION 's' TBLPROPERTIES ("skip.header.line.count"="1");
解决方案
数据不会“存储”在 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 的程度。
推荐阅读
- c# - 如何在 C# 中获取特定窗口的屏幕截图?
- python - Why is my XPath to select text not working?
- sql - Get random sample of customer IDs that meet multiple conditions
- windows - Batch File Recursively Rename files
- javascript - Eccrypto ECIES Decrypt Scheme, JavaScript
- jvm - Can non-intermediate representation code such as C++ run on a process virtual machine?
- c# - 如何为路由参数错误指定类型转换错误消息?(C#,WebAPI)
- python - 对单个值求和而不是对整列求和
- powershell - I want to get values from specific items in a text file to build a new text file using the values from the first using PowerShell
- google-cloud-platform - GCP 基于日志的监控:未收到日志时触发警报