

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# EMR Serverless アプリケーションの IPv6 サブネットを設定する
<a name="ipv6-subnets"></a>

Amazon EMR Serverless を使用すると、Amazon Virtual Private Cloud (Amazon VPC) の IPv6 経由で Apache Spark ジョブと Apache Hive ジョブを実行できます。デュアルスタック (IPv4 および IPv6) または IPv6-onlyサブネットを指定すると、EMR Serverless はそれらのサブネットのアドレス指定モードを使用してジョブを実行します。その後、ジョブは VPC の IPv6 エンドポイントと外部 IPv6 エンドポイントに到達できます。IPv6-onlyサブネットは IPv6 経由で自動的に実行されます。デュアルスタックサブネットの場合は、「」で説明されているように、設定プロパティを使用して IPv6 を有効にします[IPv6 プロパティの設定](#ipv6-properties)。

## 主な利点を理解する
<a name="ipv6-key-benefits"></a>

IPv6 経由で EMR Serverless アプリケーションを実行すると、次の利点があります。
+ **アドレススペースが大きい** – IPv6 は IPv4 よりもはるかに大きなアドレススペースを提供するため、多くのワーカーを実行する VPCs やサブネットで IPv4 アドレスが枯渇するのを防ぐことができます。
+ **デュアルスタックおよび IPv6-onlyネットワーク** – IPv4 と IPv6 の両方を使用するデュアルスタックサブネット、または IPv6-onlyサブネットでジョブを実行して、IPv6 を呼び出すネットワーク標準とコンプライアンス要件を満たします。
+ **IPv6 エンドポイントへの接続** — Spark ジョブと Hive ジョブは、VPC および外部 IPv6 エンドポイントの IPv6 エンドポイントとサービスに到達できます。
+ **柔軟な有効化** — IPv6-onlyサブネットは IPv6 経由で自動的に実行されます。デュアルスタックサブネットの場合、単一の設定プロパティで IPv6 を有効にするため、IPv6 が適用されるタイミングを制御できます。

## EMR Serverless がアドレス指定モードを決定する方法
<a name="ipv6-addressing-mode"></a>

EMR Serverless は、指定したサブネットからアプリケーションのアドレス指定モードを決定します。
+ **IPv4-onlyサブネット** – アプリケーションは IPv4-onlyを以前とまったく同じように実行します。既存のアプリケーションの動作に変更はありません。
+ **デュアルスタックサブネット** – で説明されている設定プロパティで IPv4-onlyを実行します[IPv6 プロパティの設定](#ipv6-properties)。 IPv6 IPv6 を有効にすると、アプリケーションは IPv4 と IPv6 の両方を使用できます。
+ **IPv6-onlyサブネット** – アプリケーションは IPv6-onlyを実行します。これはすべてのリリースバージョンで使用できます。

複数のサブネットを指定すると、EMR Serverless はセット内のすべてのサブネットがサポートする 1 つのアドレス指定モードでアプリケーション全体を実行します。サブネットが共通モードを共有しない場合、EMR Serverless はリクエストを拒否します。次のケースでは、セットに含めることができるサブネットの種類を、任意の数と組み合わせで説明します。
+ **IPv4-onlyおよび IPv6-only** – EMR Serverless は、検証エラーのあるセットを拒否します。
+ **IPv6-onlyおよびデュアルスタック** – セットは、セット内のデュアルスタックサブネットを含む IPv6-onlyを実行します。デュアルスタックサブネットを含むセット内のすべてのサブネットが、 の前提条件を満たしていることを確認します[VPC とサブネットの前提条件を満たす](#ipv6-prerequisites)。
+ **IPv4-onlyおよびデュアルスタック** – セットは、セット内のデュアルスタックサブネットを含む IPv4-onlyを実行します。

EMR Serverless は、アプリケーションが起動するたびに、現在のサブネットと設定からアドレス指定モードを評価します。実行中のアプリケーションは、開始したモードを保持するため、変更は次の開始まで有効になりません。

IPv4-only、デュアルスタック、および IPv6-onlyサブネットの定義については、*Amazon Virtual Private Cloud ユーザーガイド*[」の「VPC のサブネット](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html)」を参照してください。

## VPC とサブネットの前提条件を満たす
<a name="ipv6-prerequisites"></a>

IPv6 トラフィックがデータストアとジョブが使用する AWS サービスに到達できるように VPC とサブネットを設定するのはお客様の責任です。IPv6 ジョブを実行する前に、独自の VPC で以下を設定します。

step-by-stepの手順については、*Amazon Virtual Private Cloud ユーザーガイド*を参照してください。
+ **IPv6 クラスレスドメイン間ルーティング (CIDR) ブロックをサブネットに関連付けます。**各デュアルスタックまたは IPv6-onlyサブネットには、IPv6 CIDR ブロックが必要です。*Amazon Virtual Private Cloud ユーザーガイド*」の[「サブネットへの IPv6 CIDR ブロックの追加または削除](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-associate-ipv6-cidr.html)」および[「VPC の IPv6 サポート](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)」を参照してください。
+ **サブネットの IPv6 アドレスの自動割り当てを有効にします。**サブネットは、アプリケーションが IPv6 接続を受信できるように、IPv6 アドレスを自動的に割り当てる必要があります。*Amazon Virtual Private Cloud ユーザーガイド*」の[「サブネットの IP アドレス属性を変更する](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)」を参照してください。
+ **サブネットで DNS64 (DNS ベースの IPv6-to-IPv4への変換) を有効にし、アウトバウンド NAT64 (ネットワークアドレスの IPv6 から IPv4 への変換) パス (IPv6 のみ) を提供します。**IPv6-onlyアプリケーションは、IPv4-onlyエンドポイント (IPv6 アドレスをまだ公開していないサービスなど) に到達するためにこれを必要とします。サブネットで DNS64 を有効にし、NAT64 を実行する NAT ゲートウェイを介して合成された`64:ff9b::/96`トラフィックをルーティングします。デュアルスタックアプリケーションは、IPv4-onlyエンドポイントに到達でき、これは必要ありません。 IPv4 *Amazon Virtual Private Cloud ユーザーガイド*」の[「DNS64 および NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html) および NAT ゲートウェイ」を参照してください。 [https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)
+ **プライベートアウトバウンド IPv6 トラフィックの Egress-Only インターネットゲートウェイを提供します。**プライベートサブネットがインターネットからのインバウンド接続を受け入れずにアウトバウンド IPv6 接続を開始できるようにするには、Egress-Only インターネットゲートウェイとその`::/0`ルートを追加します。*Amazon Virtual Private Cloud ユーザーガイド*の[「Egress-Only インターネットゲートウェイを使用してアウトバウンド IPv6 トラフィックを有効にする](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html)」を参照してください。
+ **ジョブがセキュリティグループで必要とするアウトバウンド IPv6 トラフィックを許可します。**既存の EMR Serverless セキュリティグループルールが適用されます。一般的な VPC とセキュリティグループの設定については、「」を参照してください[データに接続するための EMR Serverless アプリケーションの VPC アクセスの設定](vpc-access.md)。

## アプリケーション用の IPv6 の設定
<a name="ipv6-configure"></a>

アプリケーションを作成するときに IPv6 を設定するか、後で既存のアプリケーションを更新して変更します。どちらの場合も、EMR Serverless は、「」で説明されているように`--network-configuration`、 のサブネットからアドレス指定モードを取得します[EMR Serverless がアドレス指定モードを決定する方法](#ipv6-addressing-mode)。デュアルスタックサブネットの場合は、「」で説明されている プロパティを使用して IPv6 も有効にします[IPv6 プロパティの設定](#ipv6-properties)。IPv6-onlyサブネットの場合は、 プロパティは必要ありません。

### アプリケーションを作成するには
<a name="ipv6-create-app"></a>

次の手順では、デュアルスタックサブネットを使用し、IPv6 を有効にする Spark アプリケーションを作成します。開始する前に、使用する予定の各サブネットが の要件を満たしていることを確認してください[VPC とサブネットの前提条件を満たす](#ipv6-prerequisites)。

次の AWS CLI コマンドは、デュアルスタックサブネットを持つ Spark アプリケーションを作成し、IPv6 を有効にします。

```
aws emr-serverless create-application \
--type SPARK \
--name {{my-application-name}} \
--release-label emr-7.14.0 \
--network-configuration '{
    "subnetIds": ["{{subnet-id-1}}", "{{subnet-id-2}}"],
    "securityGroupIds": ["{{security-group-id}}"]
}' \
--runtime-configuration '[
    {
        "classification": "spark-defaults",
        "properties": {
            "spark.emr-serverless.networking.ipv6.enabled": "true"
        }
    }
]' \
--region {{AWS_REGION}}
```

以下の値を置き換えます:
+ **`my-application-name`** – アプリケーションに付ける名前。
+ **`subnet-id-1`、 `subnet-id-2`** – 使用するデュアルスタックサブネットの IDs。
+ **`security-group-id`** – アタッチするセキュリティグループの ID。
+ **`AWS_REGION`** – アプリケーションを作成する AWS リージョン 。

デュアルスタックサブネットでは、ジョブはデフォルトで IPv4 を使用します。Spark に IPv6 を優先させるには、「」で説明されているエンジン優先プロパティを設定します[IPv6 プロパティの設定](#ipv6-properties)。Hive アプリケーションの場合は、`--type HIVE`、 `hive-site`分類、 `hive.emr-serverless.networking.ipv6.enabled`プロパティを使用します。

**注記**  
IPv6-onlyサブネットの場合は、 を省略します`--runtime-configuration`。アプリケーションは自動的に IPv6 経由で実行され、有効化またはエンジン設定のプロパティは設定されません。

### 既存のアプリケーションを更新するには
<a name="ipv6-update-app"></a>

1. 実行中の場合は、アプリケーションを停止します。

1. または `CREATED``STOPPED`状態のアプリケーションを更新します。で必要なサブネットを指定し`--network-configuration`、デュアルスタックサブネットには の有効化プロパティを含めます`--runtime-configuration`。含めないパラメータは、現在の値を保持します。

   次の AWS CLI コマンドは、新しいサブネットと有効化プロパティを使用してアプリケーションを更新します。

   ```
   aws emr-serverless update-application \
   --application-id {{application-id}} \
   --network-configuration '{
       "subnetIds": ["{{subnet-id-1}}", "{{subnet-id-2}}"],
       "securityGroupIds": ["{{security-group-id}}"]
   }' \
   --runtime-configuration '[
       {
           "classification": "spark-defaults",
           "properties": {
               "spark.emr-serverless.networking.ipv6.enabled": "true"
           }
       }
   ]' \
   --region {{AWS_REGION}}
   ```

   以下の値を置き換えます:
   + **`application-id`** – 更新するアプリケーションの ID。
   + **`subnet-id-1`、 `subnet-id-2`** – 使用するサブネットの IDs。
   + **`security-group-id`** – アタッチするセキュリティグループの ID。
   + **`AWS_REGION`** – AWS リージョン アプリケーションの 。

1. アプリケーションの起動 EMR Serverless は、開始時にアドレス指定モードを適用します。

## IPv6 プロパティの設定
<a name="ipv6-properties"></a>

次のプロパティは、アプリケーションとジョブの IPv6 を制御します。のアプリケーションレベルで有効化プロパティを設定します`runtimeConfiguration`。エンジン優先プロパティをジョブレベルで設定します。Spark `sparkSubmitParameters`の場合は で、Hive の場合は で設定`--hiveconf`します。



| エンジン | プロパティ | 設定場所 | デフォルト | 適用先 | 注意事項 | 
| --- | --- | --- | --- | --- | --- | 
| Spark | spark.emr-serverless.networking.ipv6.enabled | spark-defaults (アプリケーション runtimeConfiguration) | false | デュアルスタック | デュアルスタックサブネットで IPv6 を有効にします。 | 
| Spark | spark.emr-serverless.driverEnv.SPARK\_PREFER\_IPV6 | sparkSubmitParameters (ジョブ) | false | デュアルスタック (オプション) | Spark ドライバーに IPv6 を優先させます。IPv6-onlyサブネットに自動的に を設定します。IPv4-onlyサブネットには を設定しないでください。 | 
| Spark | spark.executorEnv.SPARK\_PREFER\_IPV6 | sparkSubmitParameters (ジョブ) | false | デュアルスタック (オプション) | Spark エグゼキュターが IPv6 を優先するようにします。IPv6-onlyサブネットに自動的に を設定します。IPv4-onlyサブネットには を設定しないでください。 | 
| [Hive] | hive.emr-serverless.networking.ipv6.enabled | hive-site (アプリケーション runtimeConfiguration) | false | デュアルスタック | Hive アプリケーションの場合、Spark 有効化プロパティと同じです。 | 
| [Hive] | JAVA\_TOOL\_OPTIONS=-Djava.net.preferIPv6Addresses=true | --hiveconf (ジョブ) | 未設定 | デュアルスタック (オプション) | Hive が IPv6 を優先します。IPv6-onlyサブネットに自動的に を設定します。IPv4-onlyサブネットには を設定しないでください。 | 

デュアルスタックサブネットでは、IPv4 と IPv6 の両方が利用可能で、エンジンはデフォルトで IPv4 を使用します。エンジンに IPv6 を優先させるには、エンジンのエンジン優先プロパティを設定します。IPv6-onlyサブネットでは、EMR Serverless によって IPv6 設定が設定されるため、これらのプロパティは設定されません。IPv4-onlyサブネットでは、エンジン優先プロパティを設定しないでください。使用可能な IPv6 がないため、IPv6 を優先するとジョブは失敗します。

次の例では、ジョブの で IPv6 を優先するように Spark エンジンを設定します`sparkSubmitParameters`。

```
--conf spark.emr-serverless.driverEnv.SPARK_PREFER_IPV6=true
--conf spark.executorEnv.SPARK_PREFER_IPV6=true
```

**重要**  
JVM の IPv4 スタックを (例えば、 `spark.driver.extraJavaOptions`または `-Djava.net.preferIPv4Stack=true`で を設定して`spark.executor.extraJavaOptions`) 強制的にアドレス指定モードにしないでください。

`runtimeConfiguration` アプリケーションレベルでの宣言の詳細については、[「EMR Serverless のデフォルトのアプリケーション設定](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/default-configs.html)」を参照してください。エンジン設定の受け渡しの詳細については、[「EMR Serverless ジョブの実行時に Spark 設定](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html)を使用する」および[「EMR Serverless ジョブの実行時に Hive 設定を使用する](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-hive.html)」を参照してください。

## 考慮事項と制限事項
<a name="ipv6-considerations"></a>
+ アドレス指定モードは API を使用して設定することはできません。変更するには、サブネット (またはデュアルスタックサブネットの`spark.emr-serverless.networking.ipv6.enabled`オプトインプロパティ) を変更し、アプリケーションを再起動します。
+ IPv4-onlyサブネットと IPv6-onlyサブネットを 1 つのアプリケーションに混在させることはできません。
+ アプリケーションが IPv6 のみを実行する場合、ジョブコードと、使用する SDKs、ドライバー、またはエンドポイントは IPv6 をサポートしている必要があります。 IPv6-only EMR Serverless を使用すると、IPv6 接続を取得できます。アプリケーションコードやサードパーティーのエンドポイントは変更されません。

## トラブルシューティング
<a name="ipv6-troubleshooting"></a>

このトピックは、DNS 解決の失敗、自動割り当て IPv6 アドレスの欠落、予期しない IPv4 の使用、サブネット検証エラーなど、EMR Serverless アプリケーションの一般的な IPvIPv6 ネットワーク問題を診断して解決するのに役立ちます。以下は、IPv6 ジョブの実行時に発生する可能性のある症状と、それぞれの対処方法です。

### DNS 解決エラー (UnknownHostException)
<a name="ipv6-ts-dns"></a>

これは、サブネットに DNS64IPv6-onlyアプリケーションで発生する可能性があるため、ジョブは必要なエンドポイントに到達できません。 NAT64 「」のこのトピックで前述したように、DNS64 を有効にし、アプリケーション内のすべてのサブネットで NAT64 用の NAT ゲートウェイを提供します[VPC とサブネットの前提条件を満たす](#ipv6-prerequisites)。

### デュアルスタックサブネットは IPv6 アドレスを自動割り当てしません
<a name="ipv6-ts-no-autoassign"></a>

これは、サブネットに IPv6 CIDR ブロックが関連付けられているが、IPv6 アドレスを自動的に割り当てないため、アプリケーションが想定する IPv6 接続を受信しない場合に発生する可能性があります。このトピックで前述したように、サブネットの IPv6 アドレスの自動割り当てを有効にしてから、新しいジョブを開始します。この設定は、変更後に作成されたリソースにのみ適用されます。

### ジョブはデュアルスタックアプリケーションで IPv4 経由で実行されます
<a name="ipv6-ts-ran-ipv4"></a>

デュアルスタックサブネットでは、これは 2 つの理由のいずれかで発生する可能性があります。まず、 設定プロパティで IPv6 を有効にしなかったため、アプリケーションは IPv4-onlyを実行します。次に、IPv6 を有効にしましたが、エンジンを優先するように設定しなかったため、エンジンは IPv4 を使用しました。の有効化プロパティとエンジン設定プロパティの両方を確認します[IPv6 プロパティの設定](#ipv6-properties)。

### UnresolvedAddressException でジョブが失敗する
<a name="ipv6-ts-unresolved"></a>

これは、ジョブが JVM 内の IPv4 スタックを強制する場合に発生する可能性があります。ジョブ設定から `-Djava.net.preferIPv4Stack=true` (および同等の設定) を削除し、ジョブを再送信します。「[IPv6 プロパティの設定](#ipv6-properties)」を参照してください。

### リクエストが互換性のないサブネットの検証エラーで失敗する
<a name="ipv6-ts-validation"></a>

これは、IPv4-only専用サブネットや、アプリケーションに IPv4 IPv6-only 専用サブネットが含まれている`true`間に に設定された`spark.emr-serverless.networking.ipv6.enabled`オプトインプロパティなど、一緒に実行できないサブネットを指定する場合に発生する可能性があります。 IPv4-only に対してサブネットを確認し[EMR Serverless がアドレス指定モードを決定する方法](#ipv6-addressing-mode)、サブネットまたはオプトインプロパティを調整して、リクエストを再試行します。