如何解决存储查询结果的 Athena 最佳实践
我正在创建一个数据湖,并在 Glue 目录中有一些表,我需要在 Athena 中查询。作为先决条件,Athena 要求我们将查询结果存储在 S3 存储桶中。我有“临时”和“日志”S3 存储桶。但由于这是客户端敏感数据,我只想检查我应该为此创建一个新的 Athena 存储桶还是使用现有的临时/日志存储桶。
注意:我以后不会再使用 Athena 查询。
解决方法
这是一个很好的观点 - Amazon Athena 查询的输出将出现在输出文件中,包括敏感数据。
您可以创建一个只允许写访问权限的存储桶——也就是说,在它上面放置一个拒绝策略,这样任何人都不能从存储桶中获取对象。这样,Athena 很乐意编写其输出,但人们看不到结果。
您还可以应用 Amazon S3 生命周期策略,在一天后删除文件。
另一种方法是在创建对象后立即触发 AWS Lambda 函数,并让 Lambda 函数删除该对象。
无论哪种方式,如果人们不需要访问结果,或者正在检索敏感数据,请要求人们将他们的 Athena 输出定向到该存储桶。
,我还要补充一点,如果您的查询中出现 PII 等敏感数据,Athena 还会保留可能包含敏感数据的历史记录。
假设有以下数据、DDL 和查询:
数据:
breed_id,breen_name,category
1,pug,toy
2,German Shepard,working,3,Scottish Terrier,Working
DDL:
CREATE EXTERNAL TABLE default.dogs (
`breed_id` int,`breed_name` string,`category` string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION
's3://stack-exchange/48836509'
TBLPROPERTIES ('skip.header.line.count'='1')
查询:
SELECT * FROM default.dogs WHERE breed_name = 'pug'
SELECT * FROM default.dogs WHERE breed_name = 'German Shepard'
我们可以在控制台中看到这些:
基于这些 documentation,我相信此历史记录已存储 45 天。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。