SageMaker в CDK: автомасштаб не отваливается при смене конфига endpoint

Пока variant AllTraffic зарегистрирован в Application Auto Scaling, CDK и CloudFormation не обновят конфигурацию SageMaker AI endpoint — тип инстанса, число копий или переменные окружения SageMaker просто отклонит. AWS показала переиспользуемый CDK-конструкт на custom resources: он снимает scalable target, перекатывает endpoint и снова вешает target tracking policy, чтобы конфиг и autoscaling менялись одним деплоем.
Три ловушки без оркестрации
Оставляете autoscaling включённым — CloudFormation упирается в требование снять AllTraffic как scalable target до смены endpoint. Снимаете target в CLI и меняете только endpoint — деплой проходит, но параметры autoscaling в шаблоне не трогались, CloudFormation не перерегистрирует цель: масштабирования нет, стек молчит.
После ручного deregister правите autoscaling в template — CloudFormation ищет ScalableTarget, которого уже нет; откат может зависнуть в UPDATE_ROLLBACK_FAILED.
Как устроена цепочка
Вместо нативных AWS::ApplicationAutoScaling::ScalableTarget и ScalingPolicy — три custom resource с порядком через node.add_dependency. Deregister снимает target до update (на первом деплое терпит отсутствие цели). Register Scalable Target ждёт InService асинхронно: опрос раз в 30 секунд, общий лимит provider — 1 час. Attach Scaling Policy — тот же паттерн, таймаут 15 минут.
ConfigHash на каждом custom resource заставляет Lambda перезапускаться при любом изменении настроек. Endpoint и autoscaling задают вместе — в walkthrough это config/config.yaml; один хеш на обе секции, иначе смена только instance_type с ml.m5.large на ml.m5.xlarge не прогонит всю последовательность.
В стеке три custom resource, но с CDK cr.Provider это 12 Lambda и две state machine Step Functions — пять handler’ов ваши, остальное фреймворк. Пример: aws-samples/sample-sagemaker-endpoint-autoscaling, Python 3.12, uv run cdk deploy InferenceStack.
Источник: Orchestrating SageMaker AI endpoint auto scaling with AWS CDK.