问题描述
我已启用Cloudfront日志,并希望通过它捕获一些信息。
为此,我正在使用aws athena查询cf日志。在我的登台环境中,这绝对可以正常工作,因为它将查询结果存储在我的登台存储桶中。
对于生产,我创建了另一个表,该表将从生产桶中查询cf日志文件,结果我要将其存储在不同的s3存储桶(生产桶)中。但是我没有找到任何方式来具有不同的输出查询结果位置。 有什么方法可以为不同的表设置不同的输出结果位置
解决方法
我假设您正在谈论S3中的QueryResultLocation:
QueryResultsLocationInS3是由工作组设置或客户端设置指定的查询结果位置。
您可以在Specifying a Query Result Location中找到有关如何设置位置的更多详细信息:
,Athena使用的查询结果位置取决于工作组设置和客户端设置。客户端设置取决于您如何运行查询。
- 如果您使用Athena控制台运行查询,则在导航栏中的“设置”下输入的“查询结果”位置将确定客户端设置。
- 如果您使用Athena API运行查询,则StartQueryExecution操作的OutputLocation参数将确定客户端设置。
- 如果使用ODBC或JDBC驱动程序运行查询,则在连接URL中指定的S3OutputLocation属性将确定客户端设置。
如果要使用CREATE TABLE AS
语句创建表,则可以在WITH
子句中为该特定表设置结果位置。例如:
CREATE TABLE table_name
WITH (
external_location ='s3://my-bucket/tables/table_name/'
)
AS
SELECT * FROM database.my_table
不幸的是,这必须是一个空白位置才能使查询正常工作。如果您想重新运行此查询或更改位置,则需要删除该位置中的所有文件。有关更多详细信息,请参见Athena documentation。