本文介绍如何创建外部存储,建立日志服务与OSS的关联。
前提条件
功能优势
与OSS进行关联查询分析,具有如下优势:
- 节省费用:将更新频率低的数据保存在OSS上,只需要支付少量的存储费用,并且可以通过内网读数据,免去流量费用。 
- 降低运维工作:在轻量级的联合分析平台中,不需要搬迁数据到同一个存储系统中。 
- 节省时间:使用SQL分析数据,分析结果秒级可见,并可以将常用的分析结果定义为报表,打开即可看到结果。 
操作步骤
- 登录日志服务控制台。 
- 在Project列表区域,单击目标Project。  
- 在页签中,单击目标Logstore。  
- 输入查询与分析语句,单击查询/分析。 - 通过SQL定义虚拟外部表,映射到OSS文件。 - * | create table <External storage> (<Schema>) with (endpoint='oss-cn-${your_region_name}-internal.aliyuncs.com',accessid='yourAccessKeyID',accesskey ='yourAccessKeySecret',bucket='<your bucket name>',objects=ARRAY['my.csv'],type='oss')- 在查询分析语句中定义外部存储名称External storage、表的Schema等信息,并通过WITH语法指定OSS访问信息及文件信息,详细信息如下表所示。 - 配置项 - 说明 - 示例 - 外部存储名称External storage - 外部存储名称,即虚拟表的名称。 - user_meta1 - 表的Schema - 定义表的属性,包括表的列名及格式。 - (userid bigint, nick varchar, gender varchar, province varchar, age bigint) - endpoint - OSS访问域名。更多信息,请参见地域和Endpoint。 重要- 请使用内网访问域名,不支持使用公网访问。 - oss-cn-hangzhou-internal.aliyuncs.com - accessid - 阿里云账号AccessKey ID和AccessKey Secret。建议您使用具备日志服务Project写入权限的RAM用户的AccessKey。授予RAM用户向指定Project写入数据权限的具体操作,请参见RAM自定义授权场景。如何获取AccessKey的具体操作,请参见访问密钥。 - LTAI**************** - accesskey - yourAccessKeySecret - bucket - CSV文件所在的OSS Bucket名称。 - examplebucket - objects - 支持CSV文件和OSS目录。objects为array类型,可以包含多个文件或目录。需要注意: - 指定目录时需要以 '/' 结尾。若指定了一个目录,如 - test_dir/就相当于这个外表关联了对应的bucket下这个oss目录里的所有的csv文件。
- 使用限制:所有类型的文件数总和不超过100个。 
 - 'user.csv' 
- 'test_dir/' 
- 'user.csv','test_dir/','my_dir/' 
 - type - 固定为oss,表示外部存储类型为OSS。 - oss - 示例命令如下所示: - * | create table user_meta1 ( userid bigint, nick varchar, gender varchar, province varchar, age bigint) with ( endpoint='oss-cn-hangzhou.aliyuncs.com',accessid='yourAccessKeyID',accesskey='yourAccessKeySecret',bucket='examplebucket',objects=ARRAY['my.csv'],type='oss')- 如果执行结果中的result为true,表示执行成功。  
- 验证是否已成功定义外部存储。 - 执行如下语句,其中,External storage为步骤4中定义的外部存储名称。返回结果为您之前定义的表内容,则表示已成功定义外部存储。 - * | select * from <External storage>
- 通过JOIN语法完成日志服务和OSS的联合查询。 - 例如,执行如下查询分析语句关联日志服务中日志的ID和OSS文件中的userid,补全日志信息。 说明- 采集的日志中需要包含参数userid。 - * | select * from <logstore> l join <External storage> u on l.userid = u.userid- 配置项 - 说明 - 示例 - Logstore - 需要查询的Logstore的名称。 - test_logstore - External storage - 步骤4中定义的外部存储名称。 - user_meta1  
关联OSS数据源的最佳实践请参见关联Logstore与OSS外表进行查询和分析。