事件庫(EventStore)是日志服務中事件數據的采集、存儲和查詢單元。每個EventStore隸屬于一個Project,每個Project中可創建多個EventStore。本文通過代碼示例介紹如何創建、修改、查詢、刪除EventStore等。
前提條件
已開通日志服務。更多信息,請參見開通日志服務。
已創建RAM用戶并完成授權。具體操作,請參見創建RAM用戶并完成授權。
已配置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變量。
重要阿里云賬號的AccessKey擁有所有API的訪問權限,建議您使用RAM用戶的AccessKey進行API訪問或日常運維。
強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
已安裝0.6.83及以上版本的日志服務Java SDK。具體操作,請參見安裝Java SDK
已創建Project。具體操作,請參見使用Java SDK管理項目Project。
注意事項
本示例以華東1(杭州)的公網Endpoint為例,其公網Endpoint為https://cn-hangzhou.log.aliyuncs.com
。如果您通過與Project同地域的其他阿里云產品訪問日志服務,請使用內網Endpointhttps://cn-hangzhou-intranet.log.aliyuncs.com
。關于日志服務支持的地域與Endpoint的對應關系,請參見服務入口。
示例代碼
本示例中,通過調用阿里云日志服務Java SDK中的相關API實現對事件庫(EventStore)的管理,包括創建、更新、列出、獲取和刪除操作。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogStore;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.*;
import com.aliyun.openservices.log.response.*;
public class ManageEventStore {
// 日志服務的服務接入點。此處以杭州為例,其它地域請根據實際情況填寫。
private static final String ENDPOINT = "https://cn-hangzhou.log.aliyuncs.com";
// 日志服務的Project名稱。
private static final String PROJECT = "ali-test-project";
// 日志服務的事件庫名稱。
private static final String EVENT_STORE_NAME = "test-events";
// 本示例從環境變量中獲取AccessKey ID和AccessKey Secret。
private static final Client client = new Client(
ENDPOINT,
System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
);
// 創建事件庫(EventStore)
public static void createEventStore() throws LogException {
LogStore eventStore = new LogStore();
eventStore.SetLogStoreName(EVENT_STORE_NAME);
eventStore.SetTtl(30);
eventStore.SetShardCount(2);
eventStore.setmAutoSplit(true);
eventStore.setmMaxSplitShard(64);
// 創建一個CreateLogStoreRequest對象,傳入項目名稱和LogStore對象,并調用客戶端的createEventStore方法創建事件庫。
CreateLogStoreRequest request = new CreateLogStoreRequest(PROJECT, eventStore);
client.createEventStore(request);
System.out.println(String.format("Create eventStore %s success", EVENT_STORE_NAME));
}
// 更新事件庫(EventStore)
public static void updateEventStore() throws LogException {
LogStore eventStore = new LogStore();
eventStore.SetLogStoreName(EVENT_STORE_NAME);
eventStore.SetTtl(60);
// 創建一個UpdateLogStoreRequest對象,傳入項目名稱和LogStore對象,并調用客戶端的updateEventStore方法更新事件庫。
UpdateLogStoreRequest request = new UpdateLogStoreRequest(PROJECT, eventStore);
client.updateEventStore(request);
System.out.println(String.format("Update eventStore %s success", EVENT_STORE_NAME));
}
// 列出所有事件庫(EventStore)
public static void listEventStores() throws LogException {
//創建一個ListLogStoresRequest對象,傳入項目名稱、起始索引和返回數量,并調用客戶端的listEventStores方法列出所有事件庫。
ListLogStoresRequest request = new ListLogStoresRequest(PROJECT, 0, 10);
ListLogStoresResponse response = client.listEventStores(request);
System.out.println(String.format("List eventStores: %s", String.join(",", response.GetLogStores())));
}
// 獲取指定事件庫(EventStore)的詳細信息
public static void getEventStore() throws LogException {
// 創建一個GetLogStoreRequest對象,傳入項目名稱和事件庫名稱,并調用客戶端的getEventStore方法獲取事件存儲的詳細信息。
GetLogStoreRequest request = new GetLogStoreRequest(PROJECT, EVENT_STORE_NAME);
GetLogStoreResponse response = client.getEventStore(request);
System.out.println(String.format("Get eventStore %s success", response.GetLogStore().GetLogStoreName()));
}
// 刪除事件庫(EventStore)
public static void deleteEventStore() throws LogException {
// 創建一個DeleteLogStoreRequest對象,傳入項目名稱和事件存儲名稱,并調用客戶端的deleteEventStore方法刪除事件存儲。
DeleteLogStoreRequest request = new DeleteLogStoreRequest(PROJECT, EVENT_STORE_NAME);
client.deleteEventStore(request);
System.out.println(String.format("Delete eventStore %s success", EVENT_STORE_NAME));
}
public static void main(String[] args) throws LogException {
createEventStore();
updateEventStore();
listEventStores();
getEventStore();
deleteEventStore();
}
}