すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:MaxCompute へのログ転送 (レガシー)

最終更新日:Jun 22, 2026

Simple Log Service (SLS) のコンソールでは、収集したログをリアルタイムでクエリしたり、ビジネスインテリジェンス (BI) 分析やデータマイニングのためにログを MaxCompute にシップしたりできます。このトピックでは、SLS から MaxCompute にログをシップする方法について説明します。

重要

MaxCompute へのログ転送 (レガシー) は廃止されました。MaxCompute にログを転送するには、MaxCompute へのログ転送 (新規) をご参照ください。

前提条件

MaxCompute をアクティベートし、テーブルを作成してください。詳細については、「テーブルの作成」をご参照ください。

制限事項

  • データ転送ジョブは、Alibaba Cloud アカウントのみが作成できます。RAM ユーザーはデータ転送ジョブを作成できません。

  • 異なる Logstore のデータを同一の MaxCompute テーブルに転送しないでください。まれに、MaxCompute テーブルのパーティションデータが上書きされる場合があります。

  • ログ時間 (予約済みフィールド time に対応) が 14 日より前のデータは転送できず、処理中に自動的に破棄されます。

  • Simple Log Service から MaxCompute にログを転送する場合、DECIMAL、DATETIME、DATE、タイムスタンプデータ型はサポートされていません。詳細については、「2.0 data type versions」をご参照ください。

  • この機能は一部のリージョンでのみサポートされています。その他のリージョンでは、DataWorks を使用してデータを同期してください。詳細については、「Ship data from Simple Log Service by using data views」をご参照ください。

    SLS プロジェクトリージョン

    MaxCompute プロジェクトリージョン

    China (Qingdao)

    China (Shanghai)

    China (Beijing)

    China (Beijing) および China (Shanghai)

    China (Zhangjiakou)

    China (Shanghai)

    China (Hohhot)

    China (Shanghai)

    China (Hangzhou)

    China (Shanghai)

    China (Shanghai)

    China (Shanghai)

    China (Shenzhen)

    China (Shenzhen) および China (Shanghai)

    China (Hong Kong)

    China (Shanghai)

ステップ 1:データ転送ジョブの作成

  1. Log Serviceコンソールにログインします。

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

  3. ログ管理 > ログストア タブで、対象の Logstore を見つけ、[>] アイコンをクリックし、次に データ変換 > エクスポート > MaxCompute を選択します。

  4. 有効化 をクリックします。

  5. シッピングに関する注意 ダイアログボックスで、シッピング をクリックします。

  6. MaxCompute へのデータシッピング ページで、データ転送ジョブのパラメータを設定し、OK をクリックします。

    次の表に、主要なパラメータを示します。

    パラメータ

    説明

    [リージョンの選択]

    サポートされる MaxCompute のリージョンは、Simple Log Service プロジェクトのリージョンによって異なります。詳細については、「制限事項」をご参照ください。

    [配信名]

    データ転送ジョブの名前です。

    [MaxCompute プロジェクト名]

    MaxCompute プロジェクトの名前です。

    [テーブル名]

    MaxCompute テーブルの名前です。

    [MaxCompute通常列]

    左側のテキストボックスに、MaxCompute テーブルの列にマッピングするログフィールド名を入力します。対応する MaxCompute テーブル列の名前が右側に表示されます。詳細については、「データモデルマッピング」をご参照ください。

    重要
    • Simple Log Service は、フィールドを列にマッピングする際、順序に基づいてログを MaxCompute に転送します。MaxCompute 列の名前を変更してもデータ転送には影響しません。MaxCompute テーブルのスキーマを変更した場合は、マッピングを再設定する必要があります。

    • 左側のテキストボックスのログフィールド名には、二重引用符 ("")、単一引用符 ('')、またはスペースを含めることはできません。

    • ログに重複するフィールド名(例:2 つの request_time フィールド)が含まれる場合、Log Service はコンソール上で一方を request_time_0 として表示することがあります。ただし、内部で保存されている実際の名前は request_time のままです。転送ルールを設定する際は、元のフィールド名 request_time を使用してください。

      フィールド名が重複している場合、システムはランダムにいずれか 1 つの値のみを転送します。結果を確実に予測できるようにするため、フィールド名の重複は避けてください。

    [MaxComputeパーティション列]

    左側のテキストボックスに、MaxCompute テーブルのパーティション列にマッピングするログフィールド名を入力します。対応する MaxCompute パーティション列の名前が右側に表示されます。詳細については、「データモデルマッピング」をご参照ください。

    説明

    最大 3 つのパーティション列を設定できます。パーティション列のカスタムフィールドを選択する際は注意してください。各データ転送ジョブで生成されるパーティションが 512 未満であることを確認してください。そうしないと、データ転送ジョブは MaxCompute テーブルへのデータ書き込みに失敗し、システムはバッチ全体のデータを転送できません。

    [パーティション形式]

    時間パーティションの形式です。設定例とパラメータの詳細については、「」および「Java SimpleDateFormat」をご参照ください。

    説明
    • 時間パーティション形式は、パーティションフィールド__partition_time__ に設定されている場合にのみ有効になります。

    • 秒単位の日付形式は使用しないでください。そうしないと、単一テーブル内のパーティション数が上限 (60,000) を超える可能性があります。

    • 単一のデータ転送ジョブで生成されるデータパーティションの数は、512 未満である必要があります。

    [シッピング間隔]

    データ転送ジョブの期間です。デフォルト値は 1800 です。単位:秒。

    データ転送ジョブの期間が指定された値に達すると、システムは自動的に新しいデータ転送ジョブを作成します。

    データ転送を有効にすると、通常、ログデータは Logstore に書き込まれてから 1 時間以内に MaxCompute に到着します。データが転送された後、MaxCompute でデータを表示できます。詳細については、「Simple Log Service から MaxCompute に転送されたデータの完全性を確認する方法」をご参照ください。

ステップ 2:MaxCompute でのデータ表示

データが MaxCompute に転送された後、MaxCompute でデータを表示できます。次のコードにサンプルを示します。MaxCompute の統合開発ツールである Data IDE を使用して、ビジュアル BI 分析やデータマイニングのためにデータを消費できます。

| log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |
+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
| 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 |
+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+

データ転送権限の付与

DataWorks でテーブルを削除してから再作成した場合、デフォルトの認可が無効になります。Simple Log Service に転送権限を手動で再付与する必要があります。

  1. DataWorks コンソールにログインします。

  2. ページの左上隅で、リージョンを選択します。

  3. 左側のメニューで、[ワークスペース] をクリックします。

  4. [ワークスペース] ページで、対象のワークスペースを見つけ、[ショートカット] にカーソルを合わせ、[データ開発] をクリックします。

  5. ワークフローを作成します。

    1. [データ開発] ページで、作成 > [ワークフローの作成] を選択します。

    2. [ワークフローの作成] ダイアログボックスで、サービス名 を設定し、作成 をクリックします。

  6. ノードを作成します。

    1. [データ開発] ページで、作成 > 新しいノード > ODPS SQL を選択します。

    2. 新しいノード ダイアログボックスで、名前[パス] を設定し、送信 をクリックします。

      [パス] を、ステップ 5 で作成したワークフローに設定します。

  7. 作成したノードのエディターで、次のコマンドを実行して必要な権限を付与します。

    コマンド

    説明

    ADD USER aliyun$shennong_open@aliyun.com;

    MaxCompute プロジェクトにユーザーを追加します。

    shennong_open@aliyun.com は Simple Log Service アカウント (変更できない固定値) です。

    GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com;

    MaxCompute プロジェクトに対する読み取りおよび一覧表示権限をユーザーに付与します。

    {ODPS_PROJECT_NAME} は MaxCompute プロジェクト名であり、実際の値に置き換える必要があります。

    GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com;

    記述、変更、および更新権限をユーザーに付与します。

    {ODPS_TABLE_NAME} は MaxCompute テーブルの名前です。プレースホルダーを実際の値に置き換えてください。

    SHOW GRANTS FOR aliyun$shennong_open@aliyun.com;

    権限が付与されているかどうかを確認します。

    コマンドが次のような出力を返す場合、権限が付与されています。

    A       projects/{ODPS_PROJECT_NAME}: List | Read
    A       projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

関連操作

データ転送ジョブを作成した後、[MaxCompute (旧 ODPS) LogShipper] ページに移動して、ジョブ設定の変更、ジョブの無効化、ジョブのステータスとエラーメッセージの確認、および失敗したジョブのリトライを実行できます。

  • データ転送設定の変更

    設定 をクリックして、ジョブ設定を変更します。パラメータの詳細については、このトピックの「ステップ 1:データ転送ジョブの作成」をご参照ください。列を追加するには、MaxCompute の宛先テーブルのスキーマを変更します。

  • データ転送ジョブの無効化

    [無効化] をクリックして、データ転送ジョブを無効化します。

  • データ転送ジョブのステータスとエラーメッセージの確認

    過去 2 日間のすべてのデータ転送ジョブとそのステータスを確認できます。

    • ジョブのステータス

      ステータス

      説明

      成功

      データ転送ジョブは想定どおりに実行されています。

      実行中

      データ転送ジョブは処理中です。しばらくしてから結果を確認してください。

      失敗

      データ転送ジョブは、リトライできない外部エラーが原因で失敗しました。エラーメッセージに基づいてトラブルシューティングを行い、ジョブをリトライしてください。例:MaxCompute テーブルのスキーマが Simple Log Service の仕様に準拠していない、または権限が不足している場合。

      過去 2 日間の失敗したジョブはすべてリトライできます。

    • エラーメッセージ

      データ転送ジョブでエラーが発生した場合、コンソールに該当するエラーメッセージが表示されます。

      エラーメッセージ

      解決策

      The MaxCompute project does not exist

      MaxCompute コンソールで、指定した MaxCompute プロジェクトが存在するかどうかを確認してください。プロジェクトが存在しない場合は作成してください。Simple Log Service はこのエラーを自動的にリトライしません。問題を解決してから、ジョブを手動でリトライしてください。

      The MaxCompute table does not exist

      MaxCompute コンソールで、指定した MaxCompute テーブルが存在するかどうかを確認してください。テーブルが存在しない場合は作成してください。Simple Log Service はこのエラーを自動的にリトライしません。問題を解決してから、ジョブを手動でリトライしてください。

      Simple Log Service is not authorized to access the MaxCompute project or table

      MaxCompute コンソールで、Simple Log Service アカウントに必要な権限を付与しているかどうかを確認してください。付与していない場合は、権限を再度付与してください。詳細については、「データ転送権限の付与」をご参照ください。Simple Log Service はこのエラーを自動的にリトライしません。問題を解決してから、ジョブを手動でリトライしてください。

      MaxCompute error

      MaxCompute でデータ転送ジョブのエラーが報告されています。詳細については、MaxCompute のドキュメントをご参照いただくか、MaxCompute チームにお問い合わせください。Simple Log Service は過去 2 日間の失敗したジョブを自動的にリトライします。

      The shipped field configuration in Simple Log Service does not match the columns in the MaxCompute table

      MaxCompute テーブルの列と Simple Log Service のログフィールド間のマッピングを再設定してください。Simple Log Service はこのエラーを自動的にリトライしません。問題を解決してから、ジョブを手動でリトライしてください。

    • ジョブのリトライ

      Simple Log Service は、内部エラーが原因で失敗したジョブを自動的にリトライします。外部エラーについては、エラーの種類によって手動でのリトライが必要になる場合があります。自動リトライの最小間隔は 30 分です。ジョブが失敗した場合は、少なくとも 30 分待ってからリトライしてください。

      失敗したジョブをすぐにリトライする場合は、すべての失敗したタスクを再試行 をクリックするか、API または SDK を使用して特定のジョブをリトライしてください。

関連ドキュメント

  • __partition_time__

    ログ時間をパーティションフィールドとして使用してデータをフィルタリングすることは、MaxCompute では一般的な方法です。

    • 形式

      Simple Log Service の partition_time は、Simple Log Service の time フィールドの値に基づいて計算され、パーティションの時間形式に基づいて切り捨てられます。単一の MaxCompute テーブルで許可されるパーティションの最大数を超えないようにするため、日付パーティション列の値はシッピング間隔に基づいて調整されます。

      たとえば、Simple Log Service のログ時間が 27/Jan/2016 20:50:13 +0800 の場合、Simple Log Service は予約済みフィールド time の値を UNIX タイムスタンプ 1453899013 として計算します。次の表は、異なる設定での時間パーティション列の値を示しています。

      シッピング間隔

      時間パーティション形式

      __partition_time__

      1800

      yyyy_MM_dd_HH_mm_00

      2016_01_27_20_30_00

      1800

      yyyy-MM-dd HH:mm

      2016-01-27 20:30

      1800

      yyyyMMdd

      20160127

      3600

      yyyyMMddHHmm

      201601272000

      3600

      yyyy_MM_dd_HH

      2016_01_27_20

    • 使用方法

      partition_time を使用してデータをフィルタリングし、フルテーブルスキャンを回避できます。たとえば、2016 年 1 月 26 日のログデータをクエリする場合、クエリステートメントは次のとおりです。

      select * from {ODPS_TABLE_NAME} where log_partition_time >= "2016_01_26" and log_partition_time < "2016_01_27";
  • __extract_others__

    __extract_others__ フィールドには JSON 文字列が含まれています。たとえば、user-agent の値を取得するには、次のクエリステートメントを実行します。

    select get_json_object(log_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10;
    説明
    • get_json_object は、MaxCompute が提供する標準 UDF です。この UDF を使用する権限を取得するには、MaxCompute チームにお問い合わせください。詳細については、「MaxCompute が提供する標準 UDF」をご参照ください。

    • この例は参考用です。MaxCompute の推奨事項に従ってください。

  • データモデルマッピング

    Simple Log Service から MaxCompute にログをシッピングする際、データモデルマッピングが関係します。関連する制限と例を以下に示します。

    • MaxCompute テーブルには、少なくとも 1 つのデータ列と 1 つのパーティション列を含める必要があります。

    • Simple Log Service の推奨予約済みフィールドは、partition_timesource、および トピック です。

    • MaxCompute テーブルのパーティションの最大数は 60,000 です。パーティション数がこの制限を超えると、テーブルにデータを書き込むことができなくなります。

    • データシッピングジョブはバッチで実行されます。単一のデータシッピングジョブが 512 未満のデータパーティションを処理するように、パーティション列とその型を慎重に設定してください。そうしないと、システムはデータのバッチ全体を MaxCompute に書き込むことができません。

    • システム予約済みフィールド extract_others には旧名の extract_others があり、両者には互換性があります。

    • MaxCompute パーティション列の値を MaxCompute の予約語またはキーワードに設定しないでください。詳細については、「予約語とキーワード」をご参照ください。

    • MaxCompute パーティション列の値を空にすることはできません。したがって、パーティション列にマッピングされるフィールドは、予約済みフィールド、またはキャスト演算子を使用して文字列からパーティション列の型に変換できる値を持つログフィールドでなければなりません。シッピングプロセスでは、パーティション列の値が空のログは破棄されます。

    • Simple Log Service では、ログフィールドは MaxCompute テーブルの 1 つの列 (データ列またはパーティション列) にのみマッピングできます。Simple Log Service はフィールドの冗長性をサポートしていません。同じフィールド名を 2 回使用すると、シッピングされる値は null になります。パーティション列で null 値が発生した場合、システムはデータをシッピングできません。

    次の表に、MaxCompute テーブルのデータ列とパーティション列、および Simple Log Service のフィールド間のマッピング例を示します。Simple Log Service の予約済みフィールドの詳細については、「予約済みフィールド」をご参照ください。

    列カテゴリ

    MaxCompute 列名

    型 (MaxCompute)

    SLS フィールド名

    型 (SLS)

    説明

    データ列

    log_source

    string

    __source__

    予約済みフィールド

    ログのソースです。

    log_time

    bigint

    __time__

    予約済みフィールド

    ログの UNIX タイムスタンプです。1970 年 1 月 1 日 00:00:00 から経過した秒数を示します。このフィールドは、データモデルの Time ドメインに対応します。

    log_topic

    string

    __topic__

    予約済みフィールド

    ログのトピックです。

    time

    string

    time

    ログコンテンツフィールド

    このフィールドはログから解析されるもので、データモデルのキーと値のペアに対応します。多くの場合、Logtail によって収集されたデータの __time__ の値は、time の値と同じです。

    ip

    string

    ip

    ログコンテンツフィールド

    このフィールドはログから解析されます。

    thread

    string

    thread

    ログコンテンツフィールド

    このフィールドはログから解析されます。

    log_extract_others

    string

    __extract_others__

    予約済みフィールド

    システムは、マッピングされていない他のログフィールドを、キーと値のペアに基づいて単一レベルの JSON 文字列にシリアル化します。ネストされた JSON はサポートされていません。

    パーティション列

    log_partition_time

    string

    __partition_time__

    予約済みフィールド

    システムは、ログの __time__ フィールドに基づいてこのフィールドを計算し、調整します。パーティションの粒度は設定可能です。

    status

    string

    status

    ログコンテンツフィールド

    パーティション数が上限を超えないようにするため、このフィールドの値は列挙可能でなければなりません。