Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

`QualityCheckStep` misplaces the output KMS key and omits tags

Abierto Apto para principiantes
#6,495 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
aws, python

Línea de trabajo

Empieza en QualityCheckStep, en el método arguments de sagemaker.mlops.workflow.quality_check_step, donde se construye el diccionario de la solicitud del trabajo de procesamiento. Mueve KmsKeyId desde el diccionario de salida de S3 hacia ProcessingOutputConfig, y añade Tags desde check_job_config a la solicitud. Ejecuta el script de reproducción del issue con print(step.arguments); está listo cuando KmsKeyId esté en ProcessingOutputConfig y Tags aparezca en la salida.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

PySDK Version

  • PySDK V2 (2.x)
  • PySDK V3 (3.x)

Describe the bug

QualityCheckStep.arguments builds a processing-job request manually.

The method puts KmsKeyId inside ProcessingS3Output. The SageMaker API
requires this field on ProcessingOutputConfig.

The method also omits the tags from CheckJobConfig.

The generated request has this incorrect structure:

{
  "ProcessingOutputConfig": {
    "Outputs": [
      {
        "S3Output": {
          "KmsKeyId": "arn:aws:kms:..."
        }
      }
    ]
  }
}

This behavior is present in SageMaker Python SDK v3.25.0.

To reproduce

Set these environment variables:

export AWS_REGION="us-east-2"
export SAGEMAKER_ROLE_ARN="arn:aws:iam::<account-id>:role/<sagemaker-execution-role>"
export KMS_KEY_ARN="arn:aws:kms:us-east-2:<account-id>:key/<key-id>"

Run this script:

import os

import boto3
from sagemaker.core.workflow.pipeline_context import PipelineSession
from sagemaker.mlops.workflow.check_job_config import CheckJobConfig
from sagemaker.mlops.workflow.quality_check_step import (
    DataQualityCheckConfig,
    QualityCheckStep,
)

session = PipelineSession(
    boto_session=boto3.Session(region_name=os.environ["AWS_REGION"])
)
job_config = CheckJobConfig(
    role=os.environ["SAGEMAKER_ROLE_ARN"],
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_kms_key=os.environ["KMS_KEY_ARN"],
    tags=[{"Key": "test", "Value": "quality-check"}],
    sagemaker_session=session,
)
quality_config = DataQualityCheckConfig(
    baseline_dataset="s3://example-bucket/baseline.csv",
    dataset_format={"csv": {"header": True}},
    output_s3_uri="s3://example-bucket/baseline-output/",
)
step = QualityCheckStep(
    name="quality-check-reproduction",
    quality_check_config=quality_config,
    check_job_config=job_config,
    register_new_baseline=True,
    skip_check=True,
)

print(step.arguments)

The output contains ProcessingOutputConfig.Outputs[0].S3Output.KmsKeyId.
The output does not contain Tags.

Expected behavior

The request must put the KMS key on ProcessingOutputConfig:

{
  "ProcessingOutputConfig": {
    "KmsKeyId": "arn:aws:kms:...",
    "Outputs": []
  },
  "Tags": [
    {"Key": "test", "Value": "quality-check"}
  ]
}

Screenshots or logs

The v3.25 implementation contains:

if self.check_job_config.output_kms_key:
    s3_output_dict["KmsKeyId"] = self.check_job_config.output_kms_key

The request builder does not read self.check_job_config.tags.

System information

  • SageMaker Python SDK version: 3.25.0
  • Framework name (eg. PyTorch) or algorithm (eg. KMeans): SageMaker Model Monitor
  • Framework version: Not applicable
  • Python version: 3.12
  • CPU or GPU: CPU
  • Custom Docker image (Y/N): No

Additional context

A temporary QualityCheckStep subclass can correct the request. The workaround
moves KmsKeyId to ProcessingOutputConfig and adds the configured tags.

A possible fix is:

processing_output_config = {"Outputs": processing_outputs}
if self.check_job_config.output_kms_key:
    processing_output_config["KmsKeyId"] = self.check_job_config.output_kms_key

request_dict["ProcessingOutputConfig"] = processing_output_config
if self.check_job_config.tags:
    request_dict["Tags"] = self.check_job_config.tags
Lenguaje dominante
Python
Estrellas
2.3k
Forks
1.3k
Merge medio
2 d 20 h
PR fusionados (30 d)
85

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de aws/sagemaker-python-sdk

Todos los issues de aws/sagemaker-python-sdk

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.