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

Simple Log Service:OSSからのデータ取得時のエラー

最終更新日:Jun 17, 2026

変換ルールに Object Storage Service (OSS) からのリソースの読み込みが含まれる場合、リソースの読み込みまたは更新のエラーが発生することがあります。ここでは、一般的な原因とそのトラブルシューティング方法について説明します。

DPI エンジンがソース Logstore からデータを読み取った後、ログイベントを変換します。変換ルールが OSS、ApsaraDB RDS、または他の Logstore から外部リソースを読み込む場合、リソースの読み込みまたは更新のエラーが発生することがあります。

エラーの影響

変換プロセス中に、変換ルールと競合するログイベントがエラーを引き起こします。 これらのエラーは、警告レベルとエラーレベルに分けられます。 エラーレベルはlogging.levelnameフィールドによって識別されます。

  • エラーレベルのエラーの場合、関連するログイベントは破棄されます。 変換プロセスは継続し、再試行は行われない。 変換結果にはこれらのログイベントは含まれません。

  • 警告レベルのエラーの場合、データは現在のドメイン固有言語 (DSL) に変換されません。 たとえば、ログイベントが指定された正規表現と一致しない場合、次のステップが実行されます。

解決策

  • エラーログのlogging.levelnameフィールドをチェックして、エラーレベルを確認します。

  • messageフィールドをチェックして、エラーログイベントを見つけます。 詳細については、「エラーログの表示」をご参照ください。

  • エラーログの理由フィールドをチェックして、エラーの原因を特定します。

エラーの原因に基づいてこれらのエラーログイベントを変換するロジックを追加します。 e_ife_switch関数などのプロセス制御関数を使用して、エラーを特定して解決できます。Error log

OSSからのデータ取得時の一般的なエラー

説明

以下の例では、AK_ID はアクセスキー ID、AK_KEY はアクセスキーシークレットです。

不正なファイルパスまたはファイル形式

OSS に data ディレクトリが存在しないか、ファイル形式が正しくないため、404 エラーログが生成されます。

  • 変換ルールの例

    # 正しいディレクトリが test であると仮定します。
    e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'data/test.txt', format='text', change_detect_interval=20))
    # この形式は test ディレクトリに存在しません。
    e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.dat', format='text', change_detect_interval=20))
  • エラーログ

    message:  Exception: {'status': 404, 'x-oss-request-id': '5D49****878', 'details': {'Code': 'NoSuchKey', 'Message': 'The specified key does not exist.', 'RequestId': '5D4***8878', 'HostId': 'lo***g.oss-cn-hangzhou.aliyuncs.com', 'Key': 'oss/test.txt'}}
  • トラブルシューティング

    エラーの原因となったログイベントをチェックします。エラーメッセージの status404 で、Message フィールドがファイルに関連している場合は、まずファイルパスが正しいかどうかをチェックしてください。

  • 解決策

    file 関数のオーケストレーションにおける res_oss_file パラメーターを正しいファイルパスに変更します。

    # 正しいディレクトリが test であると仮定します。
    e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.txt', format='text', change_detect_interval=20))

ファイルのデコードエラー

OSS から取得したファイルがデコードされるとき、または存在しないデコード方法が使用されるときにエラーが発生します。

  • 変換ルールの例

    e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.txt', format='text', change_detect_interval=20, encoding='unicode'))
  • エラーログ

    {
      "reason": "LookupError: unknown encoding: unicode"
    }
  • トラブルシューティング

    エラーの原因となったログイベントを確認します。エラーメッセージが unknown encoding: unicode の場合は、ファイルデコードの encoding パラメーターが正しいかどうかを確認します。

  • 解決策

    res_oss_file 関数のオーケストレーションで encoding パラメーターの値を正しいデコード形式に変更してください。

    # 正しいデコード形式が utf8 であると仮定します。
    e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.txt', format='text', change_detect_interval=20,encoding='utf8'))

エンドポイントエラー

res_oss_file 関数を使用する場合、Endpoint が正しくありません。

エンドポイントが存在しない

  • 変換ルールの例

    e_set("oss_file",res_oss_file("https://oss-cn-asd.aliyuncs.com", ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), 'your bucket', 'test/test.txt', format='text', change_detect_interval=20))
  • エラーログ

    message:  get_oss_bytes get errors:{'status': -2, 'x-oss-request-id': '', 'details': "RequestError: HTTPSConnectionPool(host='log-etl-staging.oss-cn-asd.aliyuncs.com', port=443)
  • トラブルシューティング

    エラーログイベントを確認します。エラーメッセージが -2 で、MessageRequestError を示している場合は、エンドポイントが存在するかどうかを確認してください。

  • 解決策

    res_oss_file 関数のオーケストレーションで、endpoint パラメーターの値を正しい値に変更します。

OSSエンドポイントがバケット名と一致しない

アクセスキーには杭州リージョンでの操作権限がありますが、エンドポイントは上海リージョンに設定されています。

  • 変換ルールの例

    e_set("oss_file",res_oss_file("https://oss-cn-shanghai.aliyuncs.com", ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), 'your bucket', 'test/test.txt', format='text', change_detect_interval=20))
  • エラーログ

    message:  get_oss_bytes get errors:{'status': 403, 'x-oss-request-id': '5D7219353A90A2852B234D14', 'details': {'Code': 'AccessDenied', 'Message': 'The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.', 'RequestId': '5D7**14', 'HostId': 'log-**.oss-cn-shanghai.aliyuncs.com', 'Bucket': 'log-**', 'Endpoint': 'oss-cn-hangzhou.aliyuncs.com'}}
  • トラブルシューティング

    エラーの原因となったログイベントを確認します。 エラーメッセージが 403 で、Message フィールドにバケットとエンドポイントが記載されている場合は、endpoint と AccessKey が同じリージョンにあることを確認します。

  • 解決策

    res_oss_file 関数オーケストレーションでは、encoding パラメーターを正しいデコード形式に設定します。

権限エラー

不正なアクセスキー

res_oss_file 関数を使用すると、アクセスキーが不正です。

  • 変換ルールの例

    e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), 'your bucket', 'test/test.txt', format='text', change_detect_interval=20))
  • エラーログ

    message: Exception: {'status': 403, 'x-oss-request-id': '5D***BEB6', 'details': {'Code': 'InvalidAccessKeyId', 'Message': 'The OSS Access Key Id you provided does not exist in our records.', 'RequestId': '5D4***BEB6', 'HostId': 'lo***g.oss-cn-hangzhou.aliyuncs.com', 'OSSAccessKeyId': 'LT***Ai'}}
  • トラブルシューティング

    エラーを引き起こしたログイベントを確認します。 エラーメッセージが 403 で、Message フィールドが AccessKey に関連している場合は、AccessKey が正しいかどうかを確認します。

  • 解決策

    res_oss_file 関数のオーケストレーションにおける AccessKey 情報を修正してください。

バケットの権限エラー

res_oss_file 関数を使用すると、バケットエラーが発生します。

  • 変換ルールの例

    e_set("oss_file",res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id=os.getenv("SLS_ACCESS_KEY_ID"),
                         ak_key=os.getenv("SLS_ACCESS_KEY_SECRET"),
                         bucket='log', file='test.txt',
                         change_detect_interval=30, encoding='utf8'))
  • エラーログ

    message: Exception: {'status': 403, 'x-oss-request-id': '5D674CE8BE0EBC45166026C5', 'details': {'Code': 'AccessDenied', 'Message': 'You have no right to access this object because of bucket acl.', 'RequestId': '5D4***BEB6', 'HostId': 'log.oss-cn-hangzhou.aliyuncs.com'}}
  • トラブルシューティング

    エラーの原因となったログイベントを確認してください。エラーメッセージが 403 で、Message フィールドがバケットに関連している場合は、バケットを操作する権限があるかどうかを確認してください。

  • 解決策

    res_oss_file 関数のオーケストレーションでバケット情報を修正します。

バケットが存在しない

指定されたバケットが OSS に存在しません。

  • 変換ルールの例

    e_set("oss_file",res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id=os.getenv("SLS_ACCESS_KEY_ID"),
                         ak_key=os.getenv("SLS_ACCESS_KEY_SECRET"),
                         bucket='twiss', file='test.txt',
                         change_detect_interval=30, encoding='utf8'))
  • エラーログ

    message: Exception: {'status': 404, 'x-oss-request-id': '5D75F6E9BB4097C678A381EF', 'details': {'Code': 'NoSuchBucket', 'Message': 'The specified bucket does not exist.', 'RequestId': '5D75F6E9BB4097C678A381EF', 'HostId': 'twiss.oss-cn-hangzhou.aliyuncs.com', 'BucketName': 'twiss'}}
  • トラブルシューティング

    エラーログイベントを確認します。エラーコードが 403 で、Message フィールドがバケットに関連している場合は、バケットが存在することを確認します。

  • 解決策

    res_oss_file 関数のオーケストレーションのバケット情報を修正します。

ファイルの定期更新に関するエラーログ

以下のエラーログは、ファイルの定期更新中にバックエンドのログレコードにのみ表示されます。

  • 次のログは、リソースを取得する最初の試行が、おそらくネットワークの問題で失敗し、リトライを準備していることを示します。

    {
      "reason":"Failed to pull data from oss for the first time and it is preparing to re-pull ..."
    }
  • 次のログは、バックエンドが定期的に更新を実行するものの、新しいリソース関数がデータの取得に失敗し、リトライを準備していることを示します。

    {
      "reason":"get_oss_byte get errors,begin retry ..."
    }
  • 次のログは、リトライが失敗し、再度リトライを準備していることを示します。最大 3 回のリトライが実行されます。

    {
      "reason":"get_oss_byte get errors,refresh_interval ..."
    }