Anpassen des Protokollspeicherorts für Step-Protokolldateien - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anpassen des Protokollspeicherorts für Step-Protokolldateien

Ab Amazon EMR Version 7.11 können Sie jetzt das S3-Protokollierungsverhalten für Schritte pro Schritt anpassen. Für einen einzelnen Schritt können Sie einen eindeutigen S3-Bucket auswählen, in den die Protokolle des Schritts hochgeladen werden. Sie können auch einen eindeutigen KMS-Schlüssel wählen, der verwendet wird, um die Protokolle des Schritts im Ruhezustand auf S3 zu verschlüsseln. Diese Optionen haben Vorrang vor allen clusterweiten Protokollierungseinstellungen, die beim Starten des Clusters konfiguriert werden.

Voraussetzungen

  • In Ihrem Cluster sollte die Clusterprotokollierung aktiviert sein. Weitere Informationen finden Sie unter Amazon EMR-Cluster-Protokollierung und Debugging konfigurieren.

  • EC2 Instanzprofil:

    • Das EC2 Instanzprofil Ihres Clusters sollte Zugriff auf den S3-Bucket haben, der in der Logging-Konfiguration des Schritts verwendet wird.

    • Das EC2 Instanzprofil Ihres Clusters sollte Zugriff auf den KMS-Schlüssel haben, der in der Logging-Konfiguration des Schritts verwendet wird. Darüber hinaus sollte das EC2 Instanzprofil Ihres Clusters kms:GenerateDataKey Aktionen zulassenkms:Decrypt.

Schritt: Log-Konfiguration

Wenn Sie einen Schritt an EMR senden, können Sie das Protokollierungsverhalten des Schritts über StepMonitoringConfigurationkonfigurieren. Das StepMonitoringConfiguration enthält das MonitoringConfiguration S3-Objekt, in dem Sie einen S3-Logging-Bucket und and/or einen KMS-Schlüssel für den Schritt angeben können.

Das folgende Beispiel zeigt Ihnen, wie Sie den S3-Bucket und den KMS-Schlüssel eines Schritts aus einem Python-Skript anpassen können:

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 )

Überlegungen

  • Wenn Ihr Cluster die Cluster-Protokollierung nicht aktiviert, werden die Step-Logs auch dann nicht in S3 hochgeladen, wenn Sie eine angebenStepMonitoringConfiguration.

  • Wenn in Ihrem Schritt eine Spark-Anwendung ausgeführt wird, werden die Container-Logs der Anwendung ebenfalls an den in der angegebenen Speicherort hochgeladenStepMonitoringConfiguration.

  • Sie können a angeben, LogUri ohne eine anzugeben, EncryptionKeyArn oder umgekehrt. EMR verwendet standardmäßig die clusterweite Einstellung für jedes Feld, das in der weggelassen wird. StepMonitoringConfiguration