AWS Glue クローラが内部サービス例外で失敗するのはなぜですか?

最終更新日: 2021 年 8 月 17 日

AWS Glue クローラが「エラー: 内部サービス例外」というエラーで失敗します。

解決方法

クローラーの内部サービスの例外は、一時的な問題が原因で発生することがあります。トラブルシューティングを開始する前に、クローラーを再度実行します。それでも内部サービスの例外が発生する場合は、以下の一般的な問題を確認します。

AWS Glue データカタログ

  • 列名の長さは 255 文字以内で、特殊文字を含めないようにしてください。列の要件の詳細については、Column を参照してください。
  • 不正な形式のデータをチェックします。例えば、列名が「[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]」の正規表現パターンに従っていない場合、クローラーは機能しません。
  • 長さが 0 の列をチェックします。これは、データの列がテーブルのデータ形式と一致しない場合に発生します。
  • データに「(precision, scale)」形式の DECIMAL 列が含まれている場合、スケール値が精度値以下であることを確認してください。
  • テーブルのスキーマ定義で、各列の [Type] (タイプ) が 131,072 バイトを超えないようにしてください。詳細については、Column structure を参照してください。
  • クローラが次のいずれかのエラーで失敗した場合は、テーブルのスキーマ定義の合計が 1 MB 以下であることを確認してください。
    • 「カタログにテーブルを作成できません」
    • 「リクエストのペイロードサイズが制限を超えました」

Amazon Simple Storage Service (Amazon S3)

  • Amazon S3 パスに特殊文字が含まれていないことを確認します。
  • クローラーの AWS Identity and Access Management (IAM) ロールに、Amazon S3 パスへのアクセス許可があることを確認します。詳細については、「AWS Glue 用の IAM ロールを作成する」を参照してください。
  • 小さなファイルが多数あると、クローラーが内部サービス例外で失敗する原因となる場合があります。この問題を回避するには、S3DistCp ツールを使用して小さなファイルを結合します。S3DistCp を使用すると、追加の Amazon EMR 料金が発生します。または、除外パターンを設定してから、ファイルをバッチでクロールします。
  • 可能であれば、データから ^、%、~ などの特殊な ASCII 文字を削除します。これが不可能な場合は、カスタム分類子を使用してデータを分類します。
  • S3 オブジェクトが STANDARD ストレージクラスを使用していることを確認します。STANDARD ストレージクラスにオブジェクトを復元するには、アーカイブされたオブジェクトの復元を参照してください。
  • クローラー設定の包含パターンと除外パターンが S3 バケットパスと一致することを確認します。
  • 暗号化された S3 バケットをクロールしている場合は、クローラーの IAM ロールに AWS Key Management Service (AWS KMS) キーに対する適切な許可があることを確認します。詳細については、Working with security configurations on the AWS Glue console および Setting up encryption in AWS Glue を参照してください。
  • 暗号化された S3 バケットをクロールしている場合は、バケット、AWS KMS キー、および AWS Glue ジョブが同じ AWS リージョン内にあることを確認します。
  • クロールする S3 バケットのリクエストレートを確認します。リクエストレートが高い場合は、より多くのプレフィックスを作成して読み込みを並列化することを検討してください。詳細については、「ベストプラクティスの設計パターン: Amazon S3 パフォーマンスの最適化」を参照してください。
  • S3 バケットのパーティションとキーに整合性があることを確認します。例えば、クローラーがオブジェクトに対してパス s3://awsdoc-example-bucket/yyyy=xxxx/mm=xxx/dd=xx/[ファイル] の使用を期待している場合に、一部のオブジェクトがパス s3://awsdoc-example-bucket/yyyy=xxxx/mm=xxx/[ファイル] を使用すると、クローラーは内部サービス例外で失敗します。
  • S3 リソースパスの長さが 700 文字未満であることを確認してください。

Amazon DynamoDB

JDBC

  • AWS KMS で暗号化された JDBC データソースをクロールしている場合は、接続に使用しているサブネットをチェックします。サブネットのルートテーブルには、AWS KMS VPC エンドポイント、または NAT ゲートウェイを経由する AWS KMS エンドポイントへのルートが必要です。
  • 正しい Include パス構文を使用していることを確認します。詳細については、Defining crawlers を参照してください。
  • JDBC データストアをクロールしている場合は、SSL 接続が正しく設定されていることを確認します。SSL 接続を使用していない場合は、クローラーの設定時に [Require SSL connection] (SSL 接続が必要です) が選択されていないことを確認してください。
  • AWS Glue 接続のデータベース名が、クローラーの Include パスのデータベース名と一致していることを確認します。また、Include パスが正しく入力されていることを確認してください。詳細については、Include and exclude patterns を参照してください。
  • 使用しているサブネットが AWS Glue でサポートされているアベイラビリティーゾーンにあることを確認してください。
  • 使用しているサブネットに十分なプライベート IP アドレスがあることを確認してください。
  • 組み込みの AWS Glue JDBC ドライバーで JDBC データソースがサポートされていることを確認します。

AWS KMS

  • AWS KMS を使用している場合、AWS Glue クローラーは AWS KMS にアクセスできる必要があります。アクセスを許可するには、AWS KMS エンドポイントの作成時に [Enable Private DNS Name] (プライベート DNS 名を有効にする) オプションを選択します。その後、AWS KMS エンドポイントを AWS Glue 接続の VPC サブネット設定に追加します。詳細については、Creating an AWS KMS VPC endpoint (VPC console) を参照してください。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?