CreateScheduledSQL 操作を呼び出して、スケジュールされた SQL ジョブを作成します。
Scheduled SQL 用の Simple Log Service ソフトウェア開発キット (SDK) は更新されなくなりました。Alibaba Cloud SDK を使用して Scheduled SQL を管理します。

前提条件
パラメーター
def create_scheduled_sql(self, project_name, scheduled_sql):リクエストパラメーター
名前 | 型 | 必須 | 説明 | 例 |
project_name | 文字列 | はい | プロジェクトの名前。 | ali-test-project |
scheduled_sql | オブジェクト | はい | スケジュールされた SQL ジョブの構成。 | - |
scheduled_sql パラメーター
名前 | 型 | 必須 | 説明 | 例 |
name | 文字列 | はい | スケジュールされた SQL ジョブの名前。名前は次の要件を満たす必要があります:
| test-001 |
displayName | 文字列 | はい | ジョブの表示名。 | test-001 |
description | 文字列 | いいえ | ジョブの説明。 | スケジュールされた SQL ジョブを作成します。 |
schedule | オブジェクト | はい | ジョブのスケジューリング構成。 | - |
configuration | オブジェクト | はい | スケジュールされた SQL ジョブの構成。 | - |
schedule パラメーター
名前 | 型 | 必須 | 説明 | 例 |
type | 文字列 | はい | スケジュールされた SQL ジョブのタイプ。次の 5 つの値がサポートされています:
| Cron |
cronExpression | 文字列 | いいえ | 0/5 * * * * | |
runImmediately | bool | いいえ | スケジュールされたジョブをすぐに実行するかどうかを指定します。 | False |
timeZone | 文字列 | いいえ | cron 式のタイムゾーン。デフォルト値は空で、UTC + 08:00 タイムゾーンを示します。 | +0800 |
delay | int | いいえ | ジョブが実行されるまでの遅延。単位: 秒。値は 86400 を超えることはできません。 | 4 |
interval | 文字列 | いいえ | type を | 1m |
Configuration パラメーター
名前 | 型 | 必須 | 説明 | 例 |
script | 文字列 | はい | スケジュールされた SQL ジョブの分析文。 | * | select * |
sqlType | 文字列 | はい | SQL 文のタイプ。 | searchQuery |
destEndpoint | 文字列 | はい | 宛先のエンドポイント。 | cn-hangzhou-intranet.log.aliyuncs.com |
destProject | 文字列 | はい | 宛先プロジェクト。 | project-demo |
sourceLogstore | 文字列 | はい | ソース Logstore。 | source-logstore-demo |
destLogstore | 文字列 | はい | 宛先 Logstore。 | dest-logstore-demo |
roleArn | 文字列 | はい | SQL 文を実行するために偽装される RAM ロールの Alibaba Cloud リソースネーム (ARN)。 | acs:ram::123456789:role/aliyunlogetlrole |
destRoleArn | 文字列 | はい | 宛先にデータを書き込むために偽装される RAM ロールの ARN。 | acs:ram::123456789:role/aliyunlogetlrole |
fromTimeExpr | 文字列 | はい | SQL タイムウィンドウの開始。 | @m-1m |
toTimeExpr | 文字列 | はい | SQL タイムウィンドウの終了。 | @m |
maxRunTimeInSeconds | int | はい | SQL 文の最大タイムアウト期間。単位: 秒。有効値: 60~1800。 | 600 |
resourcePool | 文字列 | はい | リソースプールのタイプ。値 enhanced は、拡張リソースプールを示します。 | enhanced |
maxRetries | int | はい | SQL 文がタイムアウトした後の最大再試行回数。有効値: 1~100。 | 20 |
fromTime | int | はい | 開始時刻。詳細については、「Logstore から Metricstore にデータをインポートするスケジュールされた SQL ジョブを作成する」をご参照ください。 | 1712592000 |
toTime | int | はい | 終了時刻。詳細については、「Logstore から Metricstore にデータをインポートするスケジュールされた SQL ジョブを作成する」をご参照ください。 | 0 |
dataFormat | 文字列 | はい | 次の 3 つの構成がサポートされています: | log2log |
parameters | オブジェクト | はい | SQL 構成。詳細については、「Logstore から Metricstore にデータをインポートするスケジュールされた SQL ジョブを作成する」をご参照ください。 | |
応答パラメーター
詳細については、「CreateScheduledSQL: スケジュールされた SQL ジョブの作成」をご参照ください。
サンプルコード
import os
import time
from aliyun.log import LogClient
from aliyun.log.scheduled_sql import *
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '') # AccessKey ID。
accessKeySecret = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '') # AccessKey Secret。
endpoint = "cn-hangzhou.log.aliyuncs.com" # ソースプロジェクトが配置されているリージョンのエンドポイント。
roleArn = "acs:ram::141******5616316:role/aliyunserviceroleforslsaudit" # ロールの ARN。
project = "demo-test-project" # ソースプロジェクトの名前。
source_logstore = "test-logstore" # ソース Logstore の名前。
source_metricstore = "" # ソース Metricstore の名前。
dest_endpoint = "cn-hangzhou.log.aliyuncs.com" # 宛先プロジェクトが配置されているリージョンのエンドポイント。
dest_role_arn = "acs:ram::141******5616316:role/aliyunserviceroleforslsaudit" # 宛先ロールの ARN。
dest_project = "demo-test-project" # 宛先プロジェクトの名前。
dest_logstore = "test-logstore2" # 宛先 Logstore の名前。
dest_metricstore = "" # 宛先 Metricstore の名前。
from_time = int(time.time()) - 360 # スケジュールされた SQL ジョブの開始時刻。
job_name = "test-001" # ジョブ名。
display_name = "test-001" # 表示名。
description = "Create a scheduled SQL job" # 説明。
script = "* | select *" # SQL スクリプト。
promql = "* | select promql_query_range('key{}') from metrics limit 1000" # PromQL スクリプト。
instance_id = "" # スケジュールされた SQL ジョブのジョブインスタンス ID。
delay_seconds = 0 # スケジュールされた SQL ジョブの遅延 (秒単位)。
# 変数 data_format には、"log2log"、"log2metric"、"metric2metric" の 3 つの値を指定できます。
data_format = "log2log"
# 変数 schedule_type には、"FixedRate"、"Daily"、"Weekly"、"Hourly"、"Cron" の値を指定できます。
# schedule_type = "FixedRate"
schedule_type = "FixedRate"
client = LogClient(endpoint, accessKeyId, accessKeySecret)
def generate_schedule_sql():
schedule_rule = generate_schedule_rule()
config = generate_config()
schedule_sql = ScheduledSQL()
schedule_sql.setName(job_name)
schedule_sql.setDisplayName(display_name)
schedule_sql.setDescription(description)
schedule_sql.setSchedule(schedule_rule)
schedule_sql.setConfiguration(config)
return schedule_sql
def generate_schedule_rule():
schedule_rule = JobSchedule()
schedule_rule.setType(schedule_type)
schedule_rule.setDelay(delay_seconds)
schedule_rule.setTimeZone('+0800')
if schedule_type == "FixedRate":
# 間隔の値は、"Xs"、"Xm"、"Xh"、または "Xd" の形式の文字列である必要があります。
# ここで、X は秒、分、時間、または日数を示す整数です。
schedule_rule.setInterval('60s')
elif schedule_type == "Cron":
# cron 式は有効な cron 文字列である必要があります。
schedule_rule.setCronExpression("*/2 * * * *")
elif schedule_type == "Daily":
# 時間の値は 0 から 23 までの整数である必要があります。
schedule_rule.setHour(1)
elif schedule_type == "Weekly":
# 曜日の値は 1 から 7 までの整数である必要があります。
# 時間の値は 0 から 23 までの整数である必要があります。
schedule_rule.setDayOfWeek(1)
schedule_rule.setHour(2)
elif schedule_type == "Hourly":
pass
return schedule_rule
def generate_config():
query = script
if data_format == 'log2log':
source = source_logstore
dest = dest_logstore
elif data_format == 'log2metric':
source = source_logstore
dest = dest_metricstore
elif data_format == 'metric2metric':
source = source_metricstore
dest = dest_metricstore
query = promql
parameters = generate_log2log_params()
config = ScheduledSQLConfiguration()
config.setScript(query)
config.setSqlType('searchQuery')
config.setDestEndpoint(dest_endpoint)
config.setDestProject(dest_project)
config.setSourceLogstore(source)
config.setDestLogstore(dest)
config.setRoleArn(roleArn)
config.setDestRoleArn(dest_role_arn)
config.setFromTimeExpr("@m - 5m")
config.setToTimeExpr("@m")
config.setMaxRunTimeInSeconds(1800)
config.setResourcePool("enhanced")
config.setMaxRetries(10)
config.setFromTime(from_time)
config.setToTime(0)
config.setDataFormat(data_format)
config.setParameters(parameters)
return config
def generate_log2log_params():
parameters = ScheduledSQLBaseParameters()
return parameters
if __name__ == '__main__':
schedule_sql = generate_schedule_sql()
res = client.create_scheduled_sql(dest_project, schedule_sql)
res.log_print()
レスポンスの例
CreateScheduleSqlResponse:
headers: {'Server': 'AliyunSLS', 'Content-Length': '0', 'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '*', 'Date': 'Fri, 01 Nov 2024 07:04:39 GMT', 'x-log-time': '1730444679', 'x-log-requestid': '67247D87DB04A454D92A6F6B'}
終了コード 0 でプロセスが終了しました関連ドキュメント
スケジュールされた SQL ジョブの管理に使用される API 操作の詳細については、次のトピックをご参照ください: