Athena 存储查询结果的最佳实践
Athena Best Practice to store query result
我正在创建数据湖并在 Glue Catalog 中有一些表需要在 Athena 中查询。作为先决条件,Athena 要求我们将查询结果存储在 S3 存储桶中。我有“Temp”和“Logs”S3 存储桶。但由于这是客户端敏感数据,我只想检查我应该为此创建一个新的 Athena 存储桶还是使用现有的 temp/logs 存储桶。
注意:我以后不会使用 Athena 查询。
你说得很好 -- Amazon Athena 查询的输出将出现在输出文件中,包括敏感数据。
您可以创建一个只允许写入访问的存储桶——也就是说,在其上设置拒绝策略,这样就没有人可以从该存储桶中获取对象。那样的话,Athena 很乐意写出它的输出,但是人们看不到结果。
您还可以应用 Amazon S3 生命周期策略,在一天后删除文件。
另一种方法是在创建对象后立即触发 AWS Lambda 函数,并让 Lambda 函数删除对象。
无论哪种方式,如果人们不需要访问结果,或者如果正在检索敏感数据,请将他们的 Athena 输出定向到该存储桶。
我还要补充一点,如果您的查询中出现 PII,Athena 还会保留可能包含敏感数据(例如 PII)的历史记录。
假设以下数据、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 天。
我正在创建数据湖并在 Glue Catalog 中有一些表需要在 Athena 中查询。作为先决条件,Athena 要求我们将查询结果存储在 S3 存储桶中。我有“Temp”和“Logs”S3 存储桶。但由于这是客户端敏感数据,我只想检查我应该为此创建一个新的 Athena 存储桶还是使用现有的 temp/logs 存储桶。
注意:我以后不会使用 Athena 查询。
你说得很好 -- Amazon Athena 查询的输出将出现在输出文件中,包括敏感数据。
您可以创建一个只允许写入访问的存储桶——也就是说,在其上设置拒绝策略,这样就没有人可以从该存储桶中获取对象。那样的话,Athena 很乐意写出它的输出,但是人们看不到结果。
您还可以应用 Amazon S3 生命周期策略,在一天后删除文件。
另一种方法是在创建对象后立即触发 AWS Lambda 函数,并让 Lambda 函数删除对象。
无论哪种方式,如果人们不需要访问结果,或者如果正在检索敏感数据,请将他们的 Athena 输出定向到该存储桶。
我还要补充一点,如果您的查询中出现 PII,Athena 还会保留可能包含敏感数据(例如 PII)的历史记录。
假设以下数据、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 天。