

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

# EMR Serverless のデフォルトのアプリケーション設定
<a name="default-configs"></a>

同じアプリケーションで送信するすべてのジョブに対して、アプリケーションレベルでランタイム設定とモニタリング設定の一般的なセットを指定できます。これにより、ジョブごとに同じ設定を送信する必要性に関連する追加のオーバーヘッドが軽減されます。

設定は、次の時点で変更できます。
+ [ジョブの送信時にアプリケーションレベルの設定を宣言します。](#default-configs-declare)
+ [ジョブの実行中にデフォルト設定をオーバーライドします。](#default-configs-override)

次の各セクションでは、その他の構文の詳細と例を示します。

## アプリケーションレベルでの設定の宣言
<a name="default-configs-declare"></a>

アプリケーションで送信するジョブのアプリケーションレベルのログ記録とランタイムの設定プロパティを指定できます。

**`monitoringConfiguration`**  
アプリケーションで送信するジョブのログ設定を指定するには、[[`monitoringConfiguration`]](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_MonitoringConfiguration.html) フィールドを使用します。EMR Serverless のログ記録について詳しくは、「[ログの保存](logging.md)」を参照してください。

**`runtimeConfiguration`**  
`spark-defaults` などのランタイム設定プロパティを指定するには、[`runtimeConfiguration`] フィールドに設定オブジェクトを指定します。これは、アプリケーションで送信するすべてのジョブのデフォルト設定に影響します。詳細については、[Hive 設定オーバーライドパラメータ](jobs-hive.md#hive-defaults-configurationOverrides) および [Spark 設定オーバーライドパラメータ](jobs-spark.md#spark-defaults-configurationOverrides) を参照してください。  
特定の EMR Serverless リリースによって使用可能な設定分類は異なります。例えば、カスタム Log4j `spark-driver-log4j2` と `spark-executor-log4j2` の分類は、リリース 6.8.0 以降でのみ使用できます。アプリケーション固有のプロパティのリストについては、「[Spark ジョブのプロパティ](jobs-spark.md#spark-defaults)」および「[Hive ジョブプロパティ](jobs-hive.md#hive-defaults)」を参照してください。  
アプリケーションレベルで [Apache Log4j2 プロパティ](log4j2.md)、[データ保護のためのAWS Secrets Manager](secrets-manager.md) および [Java 17 ランタイム](using-java-runtime.md)を設定することもできます。  
アプリケーションレベルで Secrets Manager シークレットを渡すには、シークレットを使用して EMR Serverless アプリケーションを作成または更新する必要があるユーザーとロールに次のポリシーをアタッチします。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "SecretsManagerPolicy",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret"
      ],
      "Resource": [
        "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret-name-123abc"
      ]
    },
    {
      "Sid": "KMSDecryptPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
      ]
    }
  ]
}
```
シークレットのカスタムポリシー作成の詳細については、「*AWS Secrets Manager ユーザーガイド*」の「[AWS Secrets Managerのアクセス許可ポリシーの例](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html)」を参照してください。

**注記**  
アプリケーションレベルで指定した `runtimeConfiguration` は、[https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html) API の `applicationConfiguration` にマッピングされます。

### 宣言の例
<a name="default-configs-declare-example"></a>

次の例は、`create-application` を使用してデフォルト設定を宣言する方法を示しています。

```
aws emr-serverless create-application \
    --release-label release-version  \
    --type SPARK \
    --name my-application-name \
    --runtime-configuration '[
        {
            "classification": "spark-defaults",
            "properties": {
                "spark.driver.cores": "4",
                "spark.executor.cores": "2",
                "spark.driver.memory": "8G",
                "spark.executor.memory": "8G",
                "spark.executor.instances": "2",
                "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver",
                "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://db-host:db-port/db-name",
                "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name",
                "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretID"
            }
        },
        {
            "classification": "spark-driver-log4j2",
            "properties": {
                "rootLogger.level":"error", 
                "logger.IdentifierForClass.name": "classpathForSettingLogger",
                "logger.IdentifierForClass.level": "info"
            }
        }
    ]' \
    --monitoring-configuration '{
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-logging-bucket/logs/app-level"
        },
        "managedPersistenceMonitoringConfiguration": {
            "enabled": false
        }
    }'
```

## ジョブ実行中の設定のオーバーライド
<a name="default-configs-override"></a>

[https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html) API を使用して、アプリケーション設定とモニタリング設定の設定オーバーライドを指定できます。次に、EMR Serverless はアプリケーションレベルとジョブレベルで指定された設定をマージして、ジョブ実行の設定を決定します。

マージが発生する際の粒度レベルは次のとおりです。
+ **[https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-applicationConfiguration](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-applicationConfiguration)** - 分類タイプ (例: `spark-defaults`)。
+ **[https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-monitoringConfiguration](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-monitoringConfiguration)** - 設定タイプ (例: `s3MonitoringConfiguration`)。

**注記**  
[https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html) で指定した設定の優先度は、アプリケーションレベルで指定した設定よりも優先されます。

優先順位ランキングの詳細については、「[Hive 設定オーバーライドパラメータ](jobs-hive.md#hive-defaults-configurationOverrides)」および「[Spark 設定オーバーライドパラメータ](jobs-spark.md#spark-defaults-configurationOverrides)」を参照してください。

ジョブを開始するときに、特定の設定を指定しない場合、設定はアプリケーションから継承されます。ジョブレベルで設定を宣言する場合は、次の操作を実行できます。
+ **既存の設定をオーバーライドする** - オーバーライド値を使用して、`StartJobRun` リクエストに同じ設定パラメータを指定します。
+ **設定を追加する** - `StartJobRun` リクエストに、指定する値を含む新しい設定パラメータを追加します。
+ **既存の設定を削除する** - アプリケーションの*ランタイム設定*を削除するには、削除する設定のキーを指定し、設定の空の宣言 `{}` を渡します。ジョブの実行に必要なパラメータを含む分類を削除することはお勧めしません。例えば、[Hive ジョブに必要なプロパティ](https://docs.aws.amazon.com/)を削除しようとすると、ジョブは失敗します。

  アプリケーションの*モニタリング設定*を削除するには、関連する設定タイプに適した方法を使用します。
  + **`cloudWatchLoggingConfiguration`** - `cloudWatchLogging` を削除するには、有効なフラグを `false` として渡します。
  + **`managedPersistenceMonitoringConfiguration`** - マネージド永続化設定を削除してデフォルトの有効状態にフォールバックするには、設定の空の宣言 `{}` を渡します。
  + **`s3MonitoringConfiguration`** - `s3MonitoringConfiguration` を削除するには、設定の空の宣言 `{}` を渡します。

### オーバーライドの例
<a name="default-configs-override-example"></a>

次の例は、`start-job-run` でのジョブ送信中に実行できるさまざまなオペレーションを示しています。

```
aws emr-serverless start-job-run \
    --application-id your-application-id \
    --execution-role-arn your-job-role-arn \
    --job-driver '{
        "sparkSubmit": {
            "entryPoint": "s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", 
            "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket1/wordcount_output"]
        }
    }' \
    --configuration-overrides '{
        "applicationConfiguration": [ 
            {
                // Override existing configuration for spark-defaults in the application
                "classification": "spark-defaults", 
                "properties": {
                    "spark.driver.cores": "2",
                    "spark.executor.cores": "1",
                    "spark.driver.memory": "4G",
                    "spark.executor.memory": "4G"
                }
            },
            {
                // Add configuration for spark-executor-log4j2
                "classification": "spark-executor-log4j2",
                "properties": {
                    "rootLogger.level": "error", 
                    "logger.IdentifierForClass.name": "classpathForSettingLogger",
                    "logger.IdentifierForClass.level": "info"
                }
            },
            {
                // Remove existing configuration for spark-driver-log4j2 from the application
                "classification": "spark-driver-log4j2",
                "properties": {}
            }
        ],
        "monitoringConfiguration": {
            "managedPersistenceMonitoringConfiguration": {
                // Override existing configuration for managed persistence
                "enabled": true
            },
            "s3MonitoringConfiguration": {
                // Remove configuration of S3 monitoring
            },
            "cloudWatchLoggingConfiguration": {
                // Add configuration for CloudWatch logging
                "enabled": true
            }
        }
    }'
```

ジョブの実行時に、「[Hive 設定オーバーライドパラメータ](jobs-hive.md#hive-defaults-configurationOverrides)」および「[Spark 設定オーバーライドパラメータ](jobs-spark.md#spark-defaults-configurationOverrides)」で説明されている優先度のオーバーライドのランキングに基づいて、次の分類と設定が適用されます。
+ 分類 `spark-defaults` は、ジョブレベルで指定したプロパティで更新されます。この分類では、`StartJobRun` に含まれるプロパティのみが考慮されます。
+ 分類 `spark-executor-log4j2` は、既存の分類リストに追加されます。
+ 分類 `spark-driver-log4j2` は削除されます。
+ `managedPersistenceMonitoringConfiguration` の設定は、ジョブレベルの設定で更新されます。
+ `s3MonitoringConfiguration` の設定は削除されます。
+ `cloudWatchLoggingConfiguration` の設定は、既存のモニタリング設定に追加されます。