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

Terraform多AWS Provider配置apply时出现InvalidClientTokenId错误

Terraform部署EKS集群首次apply报错原因排查

问题场景

使用两个独立AWS Provider:一个基于已有IAM用户创建VPC和新IAM用户,另一个使用新创建的IAM用户部署EKS集群。首次执行terraform apply到EKS模块时触发以下错误:

│ Error: validating provider credentials: retrieving caller identity from STS: operation error STS: GetCallerIdentity, https response error StatusCode: 403, RequestID: xxxxxxxxxx, api error InvalidClientTokenId: The security token included in the request is invalid.

二次执行terraform apply可正常完成部署,重新从头执行也能正常工作。仅排查该问题原因,不讨论配置合理性。

核心原因

问题出在Terraform Provider的初始化时机与资源创建顺序不匹配:

  • Terraform会在执行任何资源创建操作前,先完成所有Provider的初始化验证,包括配置了动态密钥的aws-milano-eks Provider
  • 首次执行时,module.aws-jupyterhub-iam还未完成新IAM用户的创建,cluster_profile_key和cluster_profile_secret这两个输出值尚未生成,此时Provider拿到的是无效的空值或临时占位值,导致STS调用GetCallerIdentity时返回403错误
  • 第一次apply虽然报错,但module.aws-jupyterhub-iam已经完成了IAM用户的创建,其密钥输出已被写入Terraform状态文件
  • 二次apply时,Provider初始化直接读取状态文件中已存在的有效密钥,验证通过后即可正常部署EKS集群
  • 重新从头执行时,Terraform会严格按照依赖链先创建VPC和IAM用户,状态文件提前存储了有效密钥,Provider初始化时能获取到有效值,因此不会触发错误

相关配置代码

provider "aws" {
  alias = "aws-milano"
  region = local.region
  profile = local.terraform_profile
}

module "aws-jupyterhub-vpc" {
  source = "./modules/aws-jupyterhub-vpc"
  # parameters....
  providers = {
    aws = aws.aws-milano
  }
}

module "aws-jupyterhub-iam" {
  depends_on = [ module.aws-jupyterhub-vpc ]
  source = "./modules/aws-jupytherhub-iam"

  providers = {
    aws = aws.aws-milano
  }
}

provider "aws" {
  alias = "aws-milano-eks"
  region = local.region

  # exposed from module
  access_key = module.aws-jupyterhub-iam.cluster_profile_key
  secret_key = module.aws-jupyterhub-iam.cluster_profile_secret
}

module "aws-jupyterhub-eks" {
  source = "./modules/aws-jupyterhub-eks"
  depends_on = [ module.aws-jupyterhub-vpc, module.aws-jupyterhub-iam]
  # parameters...
  providers = {
    aws = aws.aws-milano-eks
  }  
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:23:12