Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

`QualityCheckStep` misplaces the output KMS key and omits tags

Fechada Para iniciantes
#6,495 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 2 dias

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
72/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
aws, python

Direção de pesquisa

Comece em QualityCheckStep, no método arguments de sagemaker.mlops.workflow.quality_check_step, onde o dicionário de requisição do job de processamento é montado. Mova KmsKeyId do dicionário de saída do S3 para ProcessingOutputConfig e adicione Tags de check_job_config à requisição. Execute o script de reprodução da issue com print(step.arguments); está concluído quando KmsKeyId estiver em ProcessingOutputConfig e Tags aparecer na saída.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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
Linguagem predominante
Python
Estrelas
2.3k
Forks
1.3k
Merge médio
2d 16h
PRs com merge (30d)
88

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de aws/sagemaker-python-sdk

Todas as issues de aws/sagemaker-python-sdk

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.