Skip to content

feat: add telemetry emitter to ScriptProcessor and FrameworkProcessor run methods#5697

Open
ryantanaka wants to merge 1 commit intoaws:masterfrom
ryantanaka:feat/processing-telemetry
Open

feat: add telemetry emitter to ScriptProcessor and FrameworkProcessor run methods#5697
ryantanaka wants to merge 1 commit intoaws:masterfrom
ryantanaka:feat/processing-telemetry

Conversation

@ryantanaka
Copy link
Copy Markdown
Contributor

@ryantanaka ryantanaka commented Mar 28, 2026

Issue #, if available:

Telemetry is currently not emitted for FrameworkProcessor.run(..) or ScriptProcessor.run(..). This change:

  • adds telemetry.constants.Feature.PROCESSING enum
  • adds telemetry decorator to FrameworkProcessor.run(..) and ScriptProcessor.run(..)

Testing

Tested the following script locally and validated that the expected telemetry is emitted:

import logging
import os

os.environ["AWS_DEFAULT_REGION"] = "us-west-2"

from sagemaker.core import set_attribution, Attribution
from sagemaker.core.processing import ScriptProcessor, FrameworkProcessor

set_attribution(Attribution.SAGEMAKER_AGENT_PLUGIN)

ROLE_ARN = "arn:aws:iam::<ACCOUNT ID>:role/SageMakerExecutionRole"
SKLEARN_IMAGE = "246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-scikit-learn:1.4-2-1.0.87.0"

script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "test_script.py")
with open(script_path, "w") as f:
    f.write("print('hello from processing job')\n")

# --- ScriptProcessor ---
print("\n=== Submitting ScriptProcessor job ===")
script_processor = ScriptProcessor(
    role=ROLE_ARN,
    image_uri=SKLEARN_IMAGE,
    command=["python3"],
    instance_count=1,
    instance_type="ml.t3.medium",
)
script_processor.run(code=script_path, wait=True)
print(f"ScriptProcessor job name: {script_processor.latest_job.processing_job_name}")

# --- FrameworkProcessor ---
print("\n=== Submitting FrameworkProcessor job ===")
framework_processor = FrameworkProcessor(
    role=ROLE_ARN,
    image_uri=SKLEARN_IMAGE,
    command=["python3"],
    instance_count=1,
    instance_type="ml.t3.medium",
)
framework_processor.run(code=script_path, wait=True)
print(f"FrameworkProcessor job name: {framework_processor.latest_job.processing_job_name}")

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant