使用旧版aws_eks_cluster模块遇security_token长度无效错误求助
问题解决思路
核心原因
旧版aws_eks_cluster模块的凭证校验逻辑未适配AWS STS最新的临时安全令牌(security_token)长度规范。AWS后续更新了STS令牌生成规则,令牌长度远超旧模块预设的33-126字符范围,导致校验失败。
解决方案
1. 切换到新版eks_cluster模块
这是最直接的解决方式,新版模块已适配AWS最新凭证规范,不会存在旧的长度校验问题。替换后复用现有STS凭证传递逻辑即可:
module "eks_cluster" { source = "terraform-aws-modules/eks/aws" # 其他集群配置参数 aws_access_key = var.sts_access_key aws_secret_key = var.sts_secret_key security_token = var.sts_security_token }
2. 升级Terraform AWS Provider版本
如果暂时无法切换模块,将AWS Provider升级到至少v3.70.0版本(该版本修复了EKS资源对长STS令牌的校验问题)。在provider.tf中指定版本:
provider "aws" { version = ">= 3.70.0" # 其他Provider配置 access_key = var.sts_access_key secret_key = var.sts_secret_key token = var.sts_security_token }
注意:若通过模块传递凭证,需确保模块内部的Provider配置同步升级。
3. 快速排查凭证传递问题
虽然其他模块验证正常,但可快速确认两点:
- 确认传递给
aws_eks_cluster的security_token确实是STS返回的SessionToken值,而非其他字段 - 检查变量传递过程中是否存在令牌截断或编码错误
内容的提问来源于stack exchange,提问作者zin
相关产品推荐
相关产品推荐

