自訂步驟日誌檔案的日誌位置 - Amazon EMR

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

自訂步驟日誌檔案的日誌位置

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

先決條件

  • 您的叢集應該已啟用叢集記錄。如需詳細資訊,請參閱設定 Amazon EMR 叢集記錄和偵錯

  • EC2 執行個體描述檔:

    • 應允許叢集的 EC2 執行個體描述檔存取 S3 儲存貯體,該儲存貯體將用於步驟的記錄組態。

    • 應允許叢集的 EC2 執行個體描述檔存取 KMS 金鑰,該金鑰將用於步驟的記錄組態。此外,叢集的 EC2 執行個體描述檔應該允許 kms:Decryptkms:GenerateDataKey動作。

步驟日誌組態

當您提交步驟至 EMR 時,您可以透過 StepMonitoringConfiguration 設定步驟的記錄行為。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 )

考量事項

  • 如果您的叢集未啟用叢集記錄,即使您提供 ,步驟日誌也不會上傳到 S3StepMonitoringConfiguration

  • 如果您的步驟執行 Spark 應用程式,應用程式的容器日誌也會上傳到 中指定的位置StepMonitoringConfiguration

  • 您可以指定 LogUri而不指定 EncryptionKeyArn,反之亦然。對於 中省略的任何欄位,EMR 會預設為整個叢集的設定StepMonitoringConfiguration