AWS Glue ジョブまたは AWS Glue クローラーが、「SubnetId において、VPC S3 エンドポイントの検証に失敗しました」というエラーで失敗します。
簡単な説明
「SubnetId において、VPC S3 エンドポイントの検証に失敗しました」というエラーは、次の条件に当てはまる場合に発生します。
AWS Glue は、AWS Glue 接続のサブネットに、データソースと Amazon S3 に接続するためのエラスティックネットワークインターフェイスを作成します。エラスティックネットワークインターフェイスには、そのサブネット内の IP アドレス範囲からプライベート IP アドレスが割り当てられます。パブリック IP アドレスがないため、AWS Glue はインターネットを使用してデータソースや VPC 内の Amazon S3 に直接接続することはできません。詳細については、「データストアへのネットワークアクセスを設定する」を参照してください。
解決策
ルートテーブルに Amazon S3 VPC ゲートウェイエンドポイントまたは NAT ゲートウェイへのルートが含まれるように、AWS Glue 接続のサブネットを設定します。詳細については、「エラー: VPC の subnetId に S3 エンドポイントまたは NAT ゲートウェイが見つかりませんでした」を参照してください。
AWS Glue ジョブがパブリックインターネットにアクセスする必要がある場合は、サブネットが NAT ゲートウェイで設定されていることを確認してください。
S3 VPC ゲートウェイエンドポイントを設定する
次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [エンドポイント] を選択します。
- [エンドポイントを作成] を選択します。
- [サービス名] で com.amazonaws.us-east-1.s3 を選択します。
注: us-east-1 は、お使いの AWS リージョンに置き換えます。
- [タイプ] 列で [ゲートウェイ] を選択します。
- [VPC] で、エンドポイントを作成する VPC を選択します。
注: [ルートテーブルの設定] には、S3 VPC エンドポイントへのルートが自動的に追加されます。
- [ポリシー] は、デフォルトオプションの [フルアクセス] のままにします。
- [エンドポイントを作成] を選択します。
詳細については、「ゲートウェイエンドポイント」を参照してください。
リソースベースのポリシーを使用する場合は、AWS Glue ジョブまたはクローラーの AWS Identity and Access Management (IAM) ロールが、必要な S3 リソースにアクセスできるようにしてください。
NAT ゲートウェイを設定する
NAT ゲートウェイをセットアップする前に、Elastic IP アドレスを割り当てる必要があります。
また、AWS Glue 接続に使用する VPC には、1 つ以上のパブリックサブネットが必要です。詳細については、「例: プライベートサブネットと NAT にサーバーを配置したVPC」を参照してください。
次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [NAT ゲートウェイ] を選択します。
- [NAT ゲートウェイの作成] を選択します。
- [名前] に作成するゲートウェイの名前を入力します。
- [サブネット] では、AWS Glue 接続で指定した VPC のパブリックサブネットを選択します。
- [接続タイプ] は、デフォルトオプション [パブリック] のままにします。
- [NAT ゲートウェイの作成] を選択します。
ゲートウェイを設定したら、AWS Glue 接続のサブネットに関連付けられているルートテーブルを変更します。次に、NAT ゲートウェイにルートを追加します。
次の手順を実行します。
- ナビゲーションペインで [ルートテーブル] を選択します。
- 変更するサブネットに関連付けられているルートテーブルを選択します。
- [アクション] を選択してから **[ルートの編集]**を選択します。
- [ルートの編集] ページで、[ルートを追加] を選択します。
- すべてのサブネットトラフィックを NAT ゲートウェイに送信するように、新しいルートを設定します。
[送信先] に 0.0.0.0/0 と入力します。
[ターゲット] で [NAT ゲートウェイ] を選択し、お使いの NAT ゲートウェイを選択します。
- [変更を保存] を選択します。
- AWS Glue 接続をテストします。
- AWS Glue ジョブまたは AWS Glue クローラーを再度実行してください。