AWS Glue のエラー「The specified subnet does not have enough free addresses to satisfy the request」(指定されたサブネットにはリクエストを満たすのに十分な空きアドレスがありません)を解決するにはどうすればよいですか。

所要時間2分
0

AWS Glue の抽出、変換、ロード (ETL) ジョブで、次のいずれかのエラーが返されます。「指定されたサブネットには、リクエストを満たすのに十分な空きアドレスがありません。(サービス: AmazonEC2; ステータスコード: 400; エラーコード:InsufficientFreeAddressesInSubnet; リクエスト ID: my_request_id)」または「o70.getDynamicFrame の呼び出し中にエラーが発生しました。Job 0 cancelled because SparkContext was shut down caused by threshold for executors failed after launch reached (起動後に失敗したエグゼキュータのしきい値に達したことが原因で SparkContext がシャットダウンされたため、ジョブ 0 はキャンセルされました)」

簡単な説明

これらのエラーは、AWS Glue ジョブで使用できる IP アドレスが足りない場合に発生します。これらのエラーが発生する際によくある原因は 2 つあります。

  • Virtual Private Cloud (VPC) サブネットでジョブを実行すると、AWS Glue は Elastic Network Interface をセットアップします。これにより、ジョブが VPC 内の他のリソースに安全に接続できるようになります。各 Elastic Network Interface はプライベート IP アドレスを取得します。Elastic Network Interface が期待通りに解放されない場合、ジョブで使用できる IP アドレスが不足している可能性があります。エラーを解決するには、ジョブが使用した DPU の数を確認します。次に、DPU の数を減らし、ジョブを再度実行します。または、使用していない Elastic Network Interface を削除します。
  • 複数の AWS のサービスが同じサブネットを使用しています。これらのサービスは、サブネットで使用できる IP アドレスの多くを使用している可能性があります。エラーを解決するには、AWS Glue ジョブで使用できる IP アドレスをより多く持っている別のサブネットを使用します。

解決方法

これらのエラーを解決するには、次のいずれかを試してください。

ジョブのデータ処理ユニット (DPU) の数を減らす

ジョブの実行が完了したら、ジョブで使用された DPU の数を確認します。

  1. AWS Glue コンソールを開きます。
  2. ナビゲーション ペインで [ジョブ] を選択します。
  3. ジョブを選択し、[履歴] タブを選択します。[最大容量] 列には、ジョブに使用した DPU の数が表示されます。

次の手順に従って、ジョブの DPU 数を減らします。

  1. ジョブから削除する DPU の数を決定します。DPU の数は、Elastic Network Interface の数と等しくないことに注意してください。各ワーカーには、常に Elastic Network Interface が 1 つアタッチされています。ただし、次のように、各ジョブには追加の Elastic Network Interface も必要です。
    標準ワーカータイプ (ワーカーあたり 1 DPU): Elastic Network Interface が追加で 1 つ必要
    G1.X ワーカータイプ (ワーカーあたり 1 DPU): Elastic Network Interface が追加で 1 つ必要
    G2.X ワーカータイプ (2 DPU): Elastic Network Interface が追加で 1 つ必要 例:
    G.2x で 20 ワーカーの ジョブを実行している場合は、次のようにして IP アドレスの数を計算できます。
    AWS Glue 0.9/1.0: 41 DPU = 20 ワーカー (エグゼキュター) + 1 マスター (ドライバー) + 1 タスクランナー = 22 IP アドレス
    AWS Glue 2.0/3.0 の場合: 40 DPU = 19 ワーカー (エグゼキュター) + 1 マスター (ドライバー) = 20 IP アドレス (AWS Glue 2.0/3.0 ではタスクランナーなし)
  2. ナビゲーション ペインで [ジョブ] を選択します。
  3. [アクション] ドロップダウンリストを選択し、[ジョブの編集] をクリックします。
  4. [セキュリティ設定、スクリプトライブラリおよびジョブパラメータ (オプション)] リストを展開します。
  5. [最大容量 ] フィールドに、小さい値を入力します。このフィールドは、ジョブが使用できる DPU の最大数を設定します。
  6. 変更を保存してから、ジョブを再度実行します。

使用していない Elastic Network Interface を削除する

次の手順に従って、サブネットで使用できる IP アドレスの数を確認してください。

  1. AWS Glue コンソール を開きます。
  2. ナビゲーションペインで [接続] を選択します。
  3. 確認したい接続を選択します。
  4. [アクション] ドロップダウンリストで、[詳細を表示] を選択します。サブネットを書き留めます。
  5. Amazon VPC コンソールを開きます。
  6. ナビゲーションペインで、[サブネット] を選択します。
  7. [サブネット] ドロップダウンリストで、AWS Glue 接続が使用しているサブネットを選択します。
  8. [説明] タブで、[使用可能な IPv4 アドレス] フィールドを確認します。このフィールドには、サブネットで使用できる IP アドレスの数が表示されます。

使用できる IP アドレスの数が、AWS Glue ジョブに必要な IP アドレスの数を上回ることを確認してください。

使用できる IP アドレスの数が AWS Glue ジョブの実行に必要な数を下回る場合は、未使用の Elastic Network Interface を削除します

使用できる IP アドレスからなるサブネットを作成して使用する

次の手順を実行して、新しいサブネットを作成します。

  1. VPC に新しいサブネットを作成します
    注: VPC の元の CIDR ブロックを使って新しいサブネットを作成するか、VPC に CIDR ブロックを追加して、新しいサブネットで使用することができます。
  2. 古いサブネットに関連付けられているルートテーブルアクセスコントロールリスト (ACL) ルールを調べ、新しいサブネットが同じ方法でトラフィックをルーティングすることを確認します。たとえば、以前のサブネットにインターネットゲートウェイへのデフォルトルートが設定されていた場合は、新しいサブネットに同様のデフォルトルートが設定されていることを確認してください。

次の手順に従って、新しいサブネットを使用するように AWS Glue 接続を変更します。

  1. AWS Glue コンソール を開きます。
  2. ナビゲーションペインで [接続] を選択します。
  3. AWS Glue ジョブで使用している接続を選択します。
  4. [アクション] ドロップダウンリストで、[接続の編集] を選択します。
  5. [接続のプロパティを設定します] ページで、[次へ] をクリックします。
  6. [データストアへのアクセスを設定します] ページの [サブネット] ドロップダウンリストで、新しいサブネットを選択します。
  7. [次へ] を選択してから [完了] をクリックします。
  8. ジョブを再度実行します。

関連情報

Spark ジョブのジョブプロパティの定義

JDBC データストアに接続するための VPC のセットアップ

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ