`QualityCheckStep` misplaces the output KMS key and omits tags
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- aws, python
- Domaine
- cloud, machine-learning
Piste de recherche
Commence dans QualityCheckStep, à la méthode arguments de sagemaker.mlops.workflow.quality_check_step, où le dictionnaire de requête du job de traitement est construit. Remonte KmsKeyId du dictionnaire de sortie S3 vers ProcessingOutputConfig, et ajoute Tags provenant de check_job_config à la requête. Exécute le script de reproduction de l'issue avec print(step.arguments) ; c'est terminé lorsque KmsKeyId se trouve dans ProcessingOutputConfig et que Tags apparaît dans la sortie.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- Python
- Étoiles
- 2.3k
- Forks
- 1.3k
- Merge moyen
- 2 j 21 h
- PR mergées (30 j)
- 90
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de aws/sagemaker-python-sdk
-
[Bug] ModelTrainer with no input channels emits InputDataConfig: [], which CreatePipeline rejects (min=1) — v2 omitted the keyPeut-être pris @sagemaker-bot l’a pris il y a 19 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
aws/sagemaker-python-sdk#6156 · 2 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
sagemaker-train should depend on mlflow-skinny, following sagemaker-mlflow 0.5.0Peut-être pris @mohamedzeidan2021 l’a pris il y a 20 jours. Ouverte
Difficulté 2/5 Une demi-journée Accessibilité débutants 72/100
aws/sagemaker-python-sdk#6152 ·
Les mainteneurs répondent en général sous 2 jours
-
[Bug] ModelTrainer drops TrainingJobName for PipelineSession, breaking use_custom_job_prefix on TrainingStepPeut-être pris @mohamedzeidan2021 l’a pris il y a 24 jours. Ouvertecomponent: pipelines type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
aws/sagemaker-python-sdk#5776 · 1 commentaire · 1 réaction ·
Les mainteneurs répondent en général sous 2 jours
-
`ModelTrainer` bug with method to load hyperparameters from file for Amazon Nova RecipePeut-être pris @sagemaker-bot l’a pris il y a 19 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
aws/sagemaker-python-sdk#5770 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
aws/sagemaker-python-sdk#5588 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de aws/sagemaker-python-sdk
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
webrecorder/warcio#209 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Jeffy123-zhu/logspecter#20 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour