如何限制Amazon SageMaker Studio单个用户同时运行的内核数量?
限制Amazon SageMaker Studio单个用户并发内核数量的方法
目前IAM策略无法直接通过内置条件键限制单个用户同时运行的内核(KernelGateway应用)数量,因为SageMaker未提供对应条件来检查并发运行的应用数。以下是几种可行的实现方式:
1. 结合IAM策略与生命周期配置(Lifecycle Configuration)
通过限制用户只能使用指定的生命周期配置,在配置脚本中检查用户当前运行的内核数,超过阈值则拒绝启动。
步骤1:创建限制并发数的生命周期配置
编写启动脚本,检查用户当前运行的KernelGateway应用数量:
#!/bin/bash # 获取当前用户信息 USER_PROFILE_NAME=$(echo "$DOMAIN_ID" | awk -F'/' '{print $2}') DOMAIN_ID=$(echo "$DOMAIN_ID" | awk -F'/' '{print $1}') # 设置允许的最大并发内核数 MAX_CONCURRENT_KERNELS=3 # 查询用户当前运行的KernelGateway应用数量 RUNNING_KERNELS=$(aws sagemaker list-apps \ --domain-id-equals "$DOMAIN_ID" \ --user-profile-name-equals "$USER_PROFILE_NAME" \ --query 'Apps[?AppType==`KernelGateway` && Status==`InService`] | length(@)' \ --output text) # 检查是否超过阈值 if [ "$RUNNING_KERNELS" -ge "$MAX_CONCURRENT_KERNELS" ]; then echo "错误:已达到最大并发内核数限制($MAX_CONCURRENT_KERNELS),无法启动新内核。" >&2 exit 1 fi
步骤2:配置IAM策略限制用户使用指定生命周期配置
确保用户只能使用上述自定义生命周期配置创建应用:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreateApp", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:AppLifecycleConfigName": "YourRestrictedKernelLifecycleConfig" } } }, { "Effect": "Allow", "Action": "sagemaker:ListApps", "Resource": "*" } ] }
注:需要给用户添加sagemaker:ListApps权限,用于脚本查询当前运行的内核数。
2. 使用AWS Organizations服务控制策略(SCP)(适用于组织账户)
如果你的账户属于AWS Organizations,可通过SCP限制单个用户的并发应用数:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:CreateApp", "Resource": "*", "Condition": { "NumericGreaterThanEquals": { "sagemaker:ResourceCountForUser": "3" } } } ] }
注:需确认组织已启用对应的资源计数功能,部分场景可能需要结合CloudWatch指标与Lambda函数,自动终止超额运行的内核应用。
3. 账户级配额限制(全局限制)
通过AWS Service Quotas调整账户级别的SageMaker Studio concurrent apps配额,此方式为账户全局限制,无法针对单个用户,但可作为基础限制手段。
内容的提问来源于stack exchange,提问作者Michal R.
相关产品推荐
相关产品推荐

