ログストアの変換ルールも Object Storage Service (OSS) からのデータをプルするようになっている場合、データプルまたは更新エラーが発生する可能性があります。 このトピックでは、そのようなエラーとそれに対応するトラブルシューティングの方法を紹介します。

ログストアからデータを読み取った後、データ変換エンジンはログストアのログイベントの変換を開始します。 変換ルールが OSS、ApsaraDB for RDS、その他のログストアなどの外部リソースからのデータのプルを含む場合、データのプルまたは更新エラーが発生する可能性があります。

エラーの影響

詳細については、「エラーの影響」をご参照ください。

トラブルシューティング方法

詳細については、「トラブルシューティング方法」をご参照ください。

エラーの例

次の例では、AK_ID は AccessKey ID を指し、AK_KEY は AccessKey secret を指します。
  • オブジェクトのパスまたは形式が正しくありません
    "data" ディレクトリが OSS に存在しない、またはオブジェクトの形式が間違っている場合、404 エラーが発生します。
    • 変換ルール
      # In this example, the correct directory is "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))
      # The "text" format does not exist in the "test" directory.
      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'}}
    • エラーの原因

      このエラーは、指定されたオブジェクトパスが正しくない場合に発生します。 404 エラーが発生し、エラーメッセージがオブジェクトを含む場合、オブジェクトパスが正しくありません。

    • トラブルシューティング方法
      res_oss_file 関数のオーケストレーション構文にある file 設定を修正します。
      # In this example, the correct directory is "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"
      }
    • エラーの原因

      このエラーは、指定した encoding が間違っているときに発生します。 unknown encoding: unicodeエラーメッセージの報告は、指定したパラメーターが間違っていることを意味します。

    • トラブルシューティング方法
      res_oss_file 関数のオーケストレーション構文にある encoding 設定を修正します。
      # In this example, the decoding format is UTF-8.
      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 で、エラーメッセージに RequestError が含まれている場合、指定されたエンドポイントは無効です。

      • トラブルシューティング方法

        res_oss_file 関数のオーケストレーション構文にある endpoint 設定を修正します。

    • 指定した OSS エンドポイントがバケット名と一致しません。

      この例では、AccessKey ペアの所有者は中国 (杭州) リージョンのリソースを管理する権限を持っていますが、指定されたエンドポイントは中国 (上海) リージョンに対応しています。

      • 変換ルール
        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'}}
      • エラーの原因

        このエラーは、指定した endpoint および AccessKey ペアが同じリージョンに属していないときに発生します。 403 エラーが発生し、エラーメッセージに指定されたバケットとエンドポイントが含まれる場合、エンドポイントと AccessKey ペアが異なるリージョンに属していることを意味します。

      • トラブルシューティング方法

        res_oss_file 関数のオーケストレーション構文にある encoding 設定を修正します。

  • 権限エラー
    • 指定した AccessKey ID または AccessKey secret が正しくありません。
      この例では、 res_oss_file 関数の指定した AccessKey ID が間違っています。
      • 変換ルール
        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'}}
      • エラーの原因

        このエラーは、指定した AccessKey ID または AccessKey secret が正しくない場合に発生します。 403 エラーが発生し、エラーメッセージに AccessKey ID または AccessKey secret が含まれる場合、AccessKey ID または AccessKey secret が正しくないことを意味します。

      • トラブルシューティング方法

        res_oss_file 関数のオーケストレーション構文にある AK_ID および AK_KEY 設定を修正します。

    • 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'}}
      • エラーの原因

        このエラーは、AccessKey ペアの所有者が指定したバケットにアクセスする権限を持っていないときに発生します。 403 エラーが発生し、エラーメッセージに指定されたバケットが含まれている場合、AccessKey ペアの所有者がバケットにアクセスする権限を持っていないことを意味します。

      • トラブルシューティング方法

        res_oss_file 関数のオーケストレーション構文にあるバケット設定を修正します。

    • 指定したバックアップは存在しません。
      この例では、 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'}}
      • エラーの原因

        このエラーは、指定したバケットが OSS に存在しないために発生します。 403 エラーが発生し、エラーメッセージにバケットが含まれる場合は、バケットが存在しないことを意味します。

      • トラブルシューティング方法

        res_oss_file 関数のオーケストレーション構文にあるバケット設定を修正します。

  • オブジェクト更新エラー
    オブジェクト更新エラーメッセージはログに含まれます。 次の例では、3 つのエラーメッセージについて説明します。
    • 次のエラーメッセージは、ネットワークの問題が原因で OSS からの最初のデータプルに失敗し、変換ルールがデータプルを再試行することを示しています。
      {
        "reason":"Failed to pull data from oss for the first time and it is preparing to re-pull ..."
      }
    • 次のエラーメッセージは、指定したオブジェクトのデータが 定更新 されたことを示しますが、、リソース関数は OSS からの新しいデータのプルに失敗し、データのプルを再試行しています。
      {
        "reason":"get_oss_byte get errors,begin retry ..."
      }
    • 次のエラーメッセージは、再試行が失敗し、リソース関数が別の再試行を開始することを示しています。 最大 3 回の再試行が実行可能です。
      {
        "reason":"get_oss_byte get errors,refresh_interval ..."
      }