首页 > 解决方案 > Terraform 在 Sagemaker 中自动缩放

问题描述

我们所有由 Terraform 管理的 AWS 基础设施,包括 Sagemaker 资源。我们想在我们的 SM 资源中实现 Autoscaling。我们找不到将基础设施构建为代码的 Terraform 解决方案。

一般来说,ASG 应该位于aws_sagemaker_endpoint_configuration>>production_variants块中

参考:

  1. AWS 文档:https ://aws.amazon.com/blogs/aws/auto-scaling-is-now-available-for-amazon-sagemaker/
  2. TF 文档:https ://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sagemaker_endpoint_configuration

提前感谢您的回复

标签: amazon-web-servicesterraformendpointautoscaling

解决方案


所以,根据我的研究,它应该是:

resource "aws_appautoscaling_target" "sagemaker_target" {
  max_capacity       = var.max_instance_count
  min_capacity       = var.min_instance_count
  resource_id        = "endpoint/${aws_sagemaker_endpoint.endpoint.name}/variant/${var.service_name}-${var.site}-${var.environment}"
  role_arn           = aws_iam_role.sm_execution.arn
  scalable_dimension = "sagemaker:variant:DesiredInstanceCount"
  service_namespace  = "sagemaker"
}

resource "aws_appautoscaling_policy" "sagemaker_policy" {
  name               = "${var.service_name}-${var.site}-${var.environment}-target-tracking"
  policy_type        = "TargetTrackingScaling"
  resource_id        = aws_appautoscaling_target.sagemaker_target.resource_id
  scalable_dimension = aws_appautoscaling_target.sagemaker_target.scalable_dimension
  service_namespace  = aws_appautoscaling_target.sagemaker_target.service_namespace

  target_tracking_scaling_policy_configuration {
    predefined_metric_specification {
      predefined_metric_type = "SageMakerVariantInvocationsPerInstance"
    }
    target_value       = var.target_invocations
    scale_in_cooldown  = var.target_scale_in_cooldown
    scale_out_cooldown = var.target_scale_out_cooldown
  }
}

推荐阅读