AWS Glue の「The specified subnet does not have enough free addresses to satisfy the request」エラーを解決するにはどうすればよいですか?

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

AWS Glue ジョブで、次のようなエラーが表示されて失敗します。

「The specified subnet does not have enough free addresses to satisfy the request.(Service: AmazonEC2; Status Code: 400; Error Code: InsufficientFreeAddressesInSubnet; Request ID: my_request_id)」

簡単な説明

このエラーは、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 が追加で 2 つ必要
    G2.X ワーカータイプ (2 DPU): Elastic Network Interface が追加で 2 つ必要
  2. ナビゲーション ペインで [ジョブ] を選択します。
  3. [アクション] ドロップダウンメニューを選択し、[ジョブの編集] をクリックします。
  4. [セキュリティ設定、スクリプトライブラリおよびジョブパラメータ (オプション)] リストを展開します。
  5. [最大容量 ] フィールドに、小さい値を入力します。このフィールドは、ジョブが使用できる DPU の最大数を設定します。
  6. 変更を保存してから、ジョブを再度実行します。

使用していない 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. ジョブを再度実行します。

サブネットで使用できる IP アドレスの数を確認するには、次の手順に従います。

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

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


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