

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂步驟日誌檔案的日誌位置
<a name="emr-plan-debugging-step-log-customization"></a>

從 Amazon EMR 7.11 版開始，您現在可以根據每個步驟自訂步驟的 S3 記錄行為。對於單一步驟，您可以選擇上傳步驟日誌的唯一 S3 儲存貯體。您也可以選擇唯一的 KMS 金鑰，用於在 S3 上加密步驟的靜態日誌。這些選項優先於啟動叢集時設定的任何整個叢集的記錄設定。

## 先決條件
<a name="emr-plan-debugging-step-log-prerequisites"></a>
+ 您的叢集應該已啟用叢集記錄。如需詳細資訊，請參閱[設定 Amazon EMR 叢集記錄和偵錯](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html)。
+ EC2 執行個體描述檔：
  + 應允許叢集的 EC2 執行個體描述檔存取 S3 儲存貯體，該儲存貯體將用於步驟的記錄組態。
  + 應允許叢集的 EC2 執行個體描述檔存取 KMS 金鑰，該金鑰將用於步驟的記錄組態。此外，叢集的 EC2 執行個體描述檔應該允許 `kms:Decrypt`和 `kms:GenerateDataKey`動作。

## 步驟日誌組態
<a name="emr-plan-debugging-step-log-config"></a>

當您提交步驟至 EMR 時，您可以透過 [StepMonitoringConfiguration](https://docs.aws.amazon.com/cli/latest/reference/emr/add-steps.html) 設定步驟的記錄行為。StepMonitoringConfiguration 包含 S3MonitoringConfiguration 物件，您可以在其中指定步驟的 S3 記錄儲存貯體和/或 KMS 金鑰。

下列範例示範如何從 python 指令碼自訂步驟的 S3 儲存貯體和 KMS 金鑰：

```
import boto3

emr_client = boto3.client("emr", region_name="us-east-1")

# Define your step:
example_step = [
    {
        "Name": "Example Step for StepMonitoringConfiguration",
        "ActionOnFailure": "CONTINUE",
        "HadoopJarStep": {
            "Jar": "command-runner.jar",
            "Args": ["bash", "-c", "echo 1"]
        },
        "StepMonitoringConfiguration": {
            "S3MonitoringConfiguration": {
                "LogUri": "s3://your-s3-bucket/", # Replace this with your S3 bucket
                "EncryptionKeyArn": "arn:aws:kms:your-kms-key-arn" # Replace this with your KMS key ARN
            }
        }
    }
]

response = emr_client.add_job_flow_steps(
    JobFlowId="j-xxxxxxxxxxxxx",  # Replace this with your EMR cluster ID
    Steps=example_step
)
```

## 考量事項
<a name="emr-plan-debugging-step-log-considerations"></a>
+ 如果您的叢集未啟用叢集記錄，即使您提供 ，步驟日誌也不會上傳到 S3`StepMonitoringConfiguration`。
+ 如果您的步驟執行 Spark 應用程式，應用程式的容器日誌也會上傳到 中指定的位置`StepMonitoringConfiguration`。
+ 您可以指定 `LogUri`而不指定 `EncryptionKeyArn`，反之亦然。對於 中省略的任何欄位，EMR 會預設為整個叢集的設定`StepMonitoringConfiguration`。