数据投递是指将日志服务采集的数据通过控制台或者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"
}]

相关文档