You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform搭建Cognito认证SageMaker私有工作团队循环依赖问题

循环依赖问题根因

你遇到的循环依赖来自两个资源的互相引用:

  • aws_sagemaker_workforce 资源的Cognito配置需要先获取aws_cognito_user_pool_client的ID
  • 新增OAuth配置后,aws_cognito_user_pool_client需要引用aws_sagemaker_workforce的子域名作为回调地址,导致两个资源都等待对方先创建完成
解决方案

推荐使用预拼接回调地址的方案,可实现单次apply完成部署,无需分阶段操作:
SageMaker Workforce的回调地址格式是固定的,不需要等资源创建完成再获取,规则为:
https://<你的workforce名称>.<AWS区域>.labeling.sagemaker.aws/oauth2/idpresponse

操作步骤

  1. 新增数据源获取当前AWS区域(避免硬编码区域)
data "aws_region" "current" {}
  1. 修改Cognito用户池客户端配置,直接拼接回调地址,无需引用aws_sagemaker_workforce的输出属性
resource "aws_cognito_user_pool_client" "congnito_client" {
  name            = "congnito-client"
  generate_secret = true
  user_pool_id    = aws_cognito_user_pool.user_pool.id

  # 新增OAuth配置
  allowed_oauth_flows  = ["code", "implicit"]
  allowed_oauth_scopes = ["email", "openid", "profile"]
  # 预拼接回调地址,和SageMaker自动生成的地址完全一致
  callback_urls = ["https://workforce.${data.aws_region.current.name}.labeling.sagemaker.aws/oauth2/idpresponse"]
}

如果你的aws_sagemaker_workforce的workforce_name不是默认的workforce,替换回调地址中对应位置的名称即可。
这个方案配置的回调地址和SageMaker默认自动添加的地址完全一致,不会出现配置冲突,也符合你不需要手动修改回调规则的需求。

备选临时方案

如果不想修改地址拼接逻辑,也可以分两次apply完成配置:

  • 第一次apply:保持初始配置,不添加OAuth和callback_urls参数,完成Cognito客户端和SageMaker Workforce的创建
  • 第二次apply:添加OAuth配置和callback_urls = [aws_sagemaker_workforce.workforce.subdomain]参数,此时两个资源已存在,不会触发循环依赖校验

内容的提问来源于stack exchange,提问作者chagan lal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:18:03