数据投递是指将日志服务采集的数据通过控制台或者SDK投递至其他阿里云产品,便于您存储数据或联合其他系统消费数据。本文介绍如何使用SDK查询投递任务配置。
前提条件
- 已开通日志服务。更多信息,请参见开通日志服务。
- 已创建并获取AccessKey。更多信息,请参见访问密钥。
阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。RAM用户需具备操作日志服务资源的权限。具体操作,请参见为RAM用户授权。
- 已安装Java开发环境。
日志服务Java SDK支持JRE 6.0及以上的Java运行环境,您可以执行java -version命令检查您已安装的Java版本。如果未安装,可以从Java官方网站下载安装包并完成安装。
- 已安装日志服务Java SDK。具体操作,请参见安装Java SDK。
- 已创建新版或旧版投递任务。具体操作,请参见创建投递任务。
注意事项
本示例以华东1(杭州)的公网Endpoint为例,其公网Endpoint为https://cn-hangzhou.log.aliyuncs.com
。如果您希望通过与Project同地域的其他阿里云产品访问日志服务,请使用格式为https://cn-hangzhou-intranet.log.aliyuncs.com
的私网Endpoint。关于日志服务支持的地域与Endpoint的对应关系,请参见服务入口。
示例代码
本示例展示如何创建一个SinkExportDemo.java文件,用于查询目标Project下的投递任务配置信息。示例如下:
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.*;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.*;
import com.aliyun.openservices.log.response.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class SinkExportDemo {
//此处以杭州为例,其他地域请根据实际情况填写。
private static final String endpoint = "http://cn-hangzhou.log.aliyuncs.com";
//阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
private static final String accessKeyId = "yourAccessKeyId";
private static final String accessKeySecret = "yourAccessKeySecret";
//Project名称,请您根据实际情况填写。请从已创建项目中获取Project名称。
private static final String project = "ali-test-project";
//投递任务名称。您可以投递任务的基础信息区域查看任务名称。
private static final String jobName = "ali-test-job";
//创建日志服务Client。
private static final Client client = new Client(endpoint, accessKeyId, accessKeySecret);
private static String getSinkExportJob() throws LogException {
GetJobResponse getJobResponse = client.getJob(new GetJobRequest(project, jobName));
Job job = getJobResponse.getJob();
return JSONObject.toJSONString(job);
}
private static List<Export> listSinkExportJob() throws LogException {
ListExportResponse listExportResponse = client.listExport(new ListExportRequest(project));
return listExportResponse.getResults();
}
private static List<String> getOdpsSinkExportJob() throws LogException {
List<String> odpsSinkList = new ArrayList<>();
List<Export> listExports = listSinkExportJob();
for (Export job:listExports) {
DataSink type = job.getConfiguration().getSink();
Map<String, Object> map = JSONObject.parseObject(JSONArray.toJSONString(type));
Object sinkType = map.get("type");
if (sinkType.equals("AliyunODPS")) {
odpsSinkList.add(JSONArray.toJSONString(job));
}
}
return odpsSinkList;
}
private static List<String> getOssSinkExportJob() throws LogException {
List<String> ossSinkList = new ArrayList<>();
List<Export> listExports = listSinkExportJob();
for (Export job:listExports) {
DataSink type = job.getConfiguration().getSink();
Map<String, Object> map = JSONObject.parseObject(JSONArray.toJSONString(type));
Object sinkType = map.get("type");
if (sinkType.equals("AliyunOSS")) {
ossSinkList.add(JSONArray.toJSONString(job));
}
}
return ossSinkList;
}
public static void main(String[] args) throws LogException {
// 查看指定投递任务。
String jobConfig = getSinkExportJob();
System.out.println("**********查看指定投递任务配置**********");
System.out.println(jobConfig);
// 查看所有投递任务。
listSinkExportJob();
// 查看MaxCompute所有投递任务。
List<String> odpsSinkList = getOdpsSinkExportJob();
System.out.println("**********查看MaxCompute所有投递任务配置**********");
System.out.println(odpsSinkList);
// 查看OSS所有投递任务。
List<String> ossSinkList = getOssSinkExportJob();
System.out.println("**********查看OSS所有投递任务配置**********");
System.out.println(ossSinkList);
}
}
预期结果如下:
**********查看指定投递任务配置**********
{
"configuration": {
......
"fromTime": 1,
"instanceType": "Standard",
"logstore": "ali-test-logstore",
......
"state": "Enabled",
"status": "RUNNING",
"type": "Export"
}
**********查看MaxCompute所有投递任务配置**********
[{
"configuration": {
......
"status": "RUNNING",
"type": "Export"
}, {
"configuration": {
......
"state": "Enabled",
"status": "STOPPED",
"type": "Export"
}]
**********查看OSS所有投递任务配置**********
[{
"configuration": {
......
"fromTime": 0,
"instanceType": "Standard",
"logstore": "ali-test-logstore",
......
"state": "Enabled",
"status": "RUNNING",
"type": "Export"
}]
相关文档
- 在调用API接口过程中,若服务端返回结果中包含错误信息,则表示调用API接口失败。您可以参考API错误码对照表查找对应的解决方法。更多信息,请参见API错误处理对照表。
- 阿里云OpenAPI开发者门户提供调试、SDK、示例和配套文档。通过OpenAPI,您无需手动封装请求和签名操作,就可以快速对日志服务API进行调试。更多信息,请参见OpenAPI开发者门户。
- 为满足越来越多的自动化日志服务配置需求,日志服务提供命令行工具CLI(Command Line Interface)。更多信息,请参见日志服务命令行工具CLI。
- 更多示例代码,请参见Aliyun Log Java SDK on GitHub。
- 关于投递任务相关API接口说明,请参见GetShipperStatus。
- 控制台提供界面化操作,您可以创建投递任务,对投递任务查看和管理。更多信息,请参见创建投递任务、管理OSS投递任务(新版)和管理MaxCompute投递任务(新版)。