AWS Glue クローラーが内部サービス例外で失敗する

最終更新日: 2020 年 8 月 28 日

AWS Glue クローラーが「ERROR: Internal Service Exception」で失敗しないようにするにはどうすればよいですか?

解決方法

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

AWS Glue データカタログ

  • 列名は 255 文字以内で、特殊文字を含めないようにしてください。列の要件の詳細については、を参照してください。
  • 不正な形式のデータをチェックします。例えば、列名が「[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]」の正規表現パターンに従っていない場合、クローラーは機能しません。
  • 長さが 0 の列をチェックします。これは、データの列がテーブルのデータ形式と一致しない場合に発生します。
  • データに「(precision, scale)」形式の DECIMAL 列が含まれている場合、スケール値が精度値以下であることを確認してください。

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 オブジェクトがスタンダードストレージクラスを使用していることを確認します。オブジェクトをスタンダードストレージクラスに復元するには、「アーカイブされた S3 オブジェクトを復元する方法」を参照してください。
  • クローラー設定の包含パターンと除外パターンが S3 バケットパスと一致することを確認します。
  • 暗号化された S3 バケットをクロールしている場合は、クローラーの IAM ロールに AWS Key Management Service (AWS KMS) キーに対する適切なアクセス許可があることを確認します。詳細については、「AWS Glue コンソールでセキュリティ設定を使用する」および「AWS Glue での暗号化のセットアップ」を参照してください。
  • 暗号化された S3 バケットをクロールしている場合は、バケット、KMS キー、および AWS Glue ジョブが同じ AWS リージョン内にあることを確認します。
  • クロールする S3 バケットのリクエストレートを確認します。リクエストレートが高い場合は、より多くのプレフィックスを作成して読み込みを並列化することを検討してください。詳細については、「ベストプラクティスの設計パターン: Amazon S3 パフォーマンスの最適化」を参照してください。
  • S3 バケットのパーティションとキーに整合性があることを確認します。例えば、クローラーがオブジェクトに対してパス s3://awsdoc-example-bucket/yyyy=xxxx/mm=xxx/dd=xx/[files] の使用を期待している場合に、一部のオブジェクトがパス s3://awsdoc-example-bucket/yyyy=xxxx/mm=xxx/[files] を使用すると、クローラーは内部サービス例外で失敗します。

Amazon DynamoDB

JDBC

  • AWS KMS で暗号化された JDBC データソースをクロールしている場合は、接続に使用しているサブネットをチェックします。サブネットのルートテーブルには、AWS KMS VPC エンドポイント、または NAT ゲートウェイを経由する KMS エンドポイントへのルートが必要です。
  • 正しい Include パス構文を使用していることを確認します。詳細については、「クローラーの定義」を参照してください。
  • JDBC データストアをクロールしている場合は、SSL 接続が正しく設定されていることを確認します。SSL 接続を使用していない場合は、クローラーの設定時に Require SSL connection が選択されていないことを確認してください。
  • AWS Glue 接続のデータベース名がクローラーの Include パスのデータベース名と一致すること、および Include パスが正しく入力されていることを確認します。詳細については、「包含パターンと除外パターン」を参照してください。

AWS KMS

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

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


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