AWS Glue エラー「VPC S3 endpoint validation failed for SubnetId」(SubnetId に対する VPC S3 エンドポイントの検証に失敗しました) をトラブルシューティングするにはどうすればよいですか?
最終更新日: 2022 年 9 月 28 日
AWS Glue ジョブは、以下のエラーで失敗しました。「JobRunId:jr_xx は、SubnetId の VPC S3 エンドポイントの検証が失敗した以外にも実行に失敗しました。理由: SubnetId の S3 エンドポイントまたは NAT ゲートウェイが見つかりませんでした。」
- または -
AWS Glue Crawler が 以下のエラーで失敗しました。「SubnetId の VPC S3 エンドポイントの検証に失敗しました。理由: SubnetId の S3 エンドポイントまたは NAT ゲートウェイが見つかりませんでした。」
簡単な説明
このエラーは、次の条件に当てはまる場合に発生します。
- AWS Glue ジョブまたは AWS Glue クローラーで AWS Glue 接続を使用しています。
- AWS Glue 接続用に構成されたサブネットには Amazon Simple Storage Service (Amazon S3)、Virtual Private Cloud (VPC) のエンドポイントまたは NAT ゲートウェイの設定がありません。
AWS Glue は、AWS Glue 接続で指定されたサブネットに Elastic Network Interface を作成します。これらの Elastic Network Interface は、データソースと Amazon S3 への接続に使用されます。Elastic Network Interface には、指定されたサブネット内の IP アドレス範囲からプライベート IP アドレスが割り当てられます。パブリック IP アドレスが使用されないため、AWS Glue はインターネットを直接使用して VPC 内のデータソースまたは Amazon S3 に接続することはできません。詳細については、「データストアへのネットワークアクセスを設定する」を参照してください。
解決方法
AWS Glue 接続用に設定されたサブネットが、サブネットのルートテーブルに Amazon S3 VPC ゲートウェイエンドポイントまたは NAT ゲートウェイへのルートを持っていることを確認します。詳細については、「エラー: VPC の subnetId に S3 エンドポイントまたは NAT ゲートウェイが見つかりませんでした」を参照してください。AWS Glue ジョブがパブリックインターネットにアクセスする必要がある場合は、サブネットが NAT ゲートウェイで設定されていることを確認します。
S3 VPC ゲートウェイエンドポイントの設定
S3 VPC ゲートウェイエンドポイントをセットアップするには、次のステップに従います。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインから [エンドポイント] を選択します。
- [エンドポイントを作成] を選択します。
- [サービス名] で com.amazonaws.us-east-1.s3 を選択します。[タイプ] 列にゲートウェイと表示されていることを確認してください。
注:us-east-1 は必ず、お好みの AWS リージョンに置き換えてください。 - [VPO]では、エンドポイントを作成する VPC を選択します。
- [Configure route tables] (ルートテーブルの設定) では、S3 VPC エンドポイントへのルートが自動的に追加されます。
- [Policy] (ポリシー) では、デフォルトオプション [Full Access] (フルアクセス) のままにします。
- [Create Endpoint] (エンドポイントを作成) を選択します。
詳細については、「Gateway endpoints」(ゲートウェイエンドポイント) を参照してください。
より制限の厳しいポリシーを設定する場合は、AWS Glue ジョブまたは AWS Glue クローラーの AWS Identity and Access Management (IAM) ロールで必要な S3 バケットおよびオブジェクトにアクセスすることを必ず許可してください。
NAT ゲートウェイの設定
注: Elastic IP アドレスを作成することは、NAT ゲートウェイを設定するための前提条件です。割り当ての詳細については、「Elastic IP アドレスを割り当てる」を参照してください。
NAT ゲートウェイを設定するには、次の手順を実行します。
注: AWS Glue 接続に使用する VPC には、少なくとも 1 つのパブリックサブネットがあることを確認します。詳細については「パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで、[NAT ゲートウェイ] を選択します。
- [NAT ゲートウェイの作成] を選択します。
- [名前] に、作成するゲートウェイの名前を入力します。
- [サブネット] で、AWS Glue 接続で指定した VPC 内のパブリックサブネットを選択します。
- [接続タイプ] では、デフォルトオプションを[パブリック] のままにして、パブリック NAT ゲートウェイを作成できます。
- [NAT ゲートウェイの作成] を選択します。
ゲートウェイを設定したら、次の操作を行う必要があります。
- AWS Glue 接続で指定されたサブネットに関連付けられているルートテーブルを変更します。
- 作成された NAT ゲートウェイにルートを追加します。
ルートテーブルを変更し、NAT ゲートウェイにルートを追加するには、次の手順を実行します。
- ナビゲーションペインで [ルートテーブル] を選択します。
- 変更するサブネットに関連付けられているルートテーブルを選択します。
- [アクション] を選択してから、[ルート編集] を選択します。
- [ルートの編集] ページで、[ルートの追加] を選択します。
- 表示される新しいルートで、次の操作を行います。
[Destination] (送信先) には、0.0.0.0/0 を入力します。
ターゲット で NAT ゲートウェイ を選択し、作成した NAT ゲートウェイを選択します。注:インターネットバウンドトラフィックなど、すべてのサブネットトラフィックが NAT ゲートウェイに送信されるようにするには、これらのオプションを選択する必要があります。 - [Save changes] (変更を保存) を選択します。
サブネットに S3 VPC エンドポイントまたは NAT ゲートウェイを設定したら、それぞれの AWS Glue 接続をテストします。テスト接続が成功した後に AWS Glue ジョブまたは AWS Glue クローラを再実行します。