`QualityCheckStep` misplaces the output KMS key and omits tags
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
- Área
- cloud, machine-learning
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
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aws/sagemaker-python-sdk
-
[Bug] ModelTrainer with no input channels emits InputDataConfig: [], which CreatePipeline rejects (min=1) — v2 omitted the keyPosiblemente ocupada @sagemaker-bot la tomó hace 17 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
aws/sagemaker-python-sdk#6156 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
-
sagemaker-train should depend on mlflow-skinny, following sagemaker-mlflow 0.5.0Posiblemente ocupada @mohamedzeidan2021 la tomó hace 18 días. Abierto
Dificultad 2/5 Medio día Aptitud para principiantes 72/100
aws/sagemaker-python-sdk#6152 ·
Los mantenedores suelen responder en 2 días
-
[Bug] ModelTrainer drops TrainingJobName for PipelineSession, breaking use_custom_job_prefix on TrainingStepPosiblemente ocupada @mohamedzeidan2021 la tomó hace 22 días. Abiertocomponent: pipelines type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
aws/sagemaker-python-sdk#5776 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 2 días
-
`ModelTrainer` bug with method to load hyperparameters from file for Amazon Nova RecipePosiblemente ocupada @sagemaker-bot la tomó hace 17 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
aws/sagemaker-python-sdk#5770 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
aws/sagemaker-python-sdk#5588 · 1 comentario ·
Los mantenedores suelen responder en 2 días
Todos los issues de aws/sagemaker-python-sdk
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
EchoTools/nevr-runtime#651 ·
Los mantenedores suelen responder en 1 día
-
bug frontend rt sev-3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
noontide-co/mainbranch#1211 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[1.x Bug] run-operation --sql reports success but rolls back writes on transaction-capable adaptersAbiertotriage
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
dbt-labs/dbt#16784 · 1 comentario ·
Los mantenedores suelen responder en 1 día