使用Terraformer导入AWS Lambda资源时遇安全令牌无效错误求助
解决Terraformer导入AWS Lambda时的UnrecognizedClientException错误
问题场景
执行Terraformer导入Lambda资源命令:
terraformer import aws --resources lambda --filter Type=lambda;Name=lambda-function-name
遇到错误:
aws importing... lambda aws error initializing resources in service lambda, err: operation error Lambda: ListFunctions, https response error StatusCode: 403, RequestID: some-request-id, api error UnrecognizedClientException: The security token included in the request is invalid. aws Connecting...
同一终端内aws cli、terraform plan、terraform apply均能正常执行,Terraform提供商配置为:
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 4.16" } } required_version = ">= 1.2.0" } provider "aws" { region = "ca-central-1" }
Terraformer版本为v0.8.22。
解决方案
1. 显式指定凭证与区域
Terraformer的凭证加载逻辑和Terraform存在差异,执行命令时直接传入凭证和区域参数:
terraformer import aws \ --resources lambda \ --filter Type=lambda;Name=lambda-function-name \ --region ca-central-1 \ --aws-access-key-id YOUR_ACCESS_KEY \ --aws-secret-access-key YOUR_SECRET_KEY
若使用临时凭证,需额外添加--aws-session-token YOUR_SESSION_TOKEN参数。
2. 清理Terraformer缓存
旧的凭证缓存可能导致冲突,删除当前目录下的.terraformer缓存目录后重新执行命令:
rm -rf .terraformer
3. 升级Terraformer版本
v0.8.22存在AWS凭证处理的已知兼容问题,升级到最新稳定版(如v0.8.24+)可修复部分SDK适配问题:
# 以Homebrew安装为例,其他安装方式请对应更新 brew upgrade terraformer
4. 验证IAM权限
确认当前凭证拥有lambda:ListFunctions权限,Terraformer导入时需要该权限列出Lambda函数以匹配过滤条件,补充IAM策略:
{ "Effect": "Allow", "Action": "lambda:ListFunctions", "Resource": "*" }
5. 检查环境变量优先级
确保终端内没有残留的旧AWS环境变量干扰,执行以下命令清空可能冲突的变量:
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
之后重新导入,让Terraformer读取默认凭证链(如~/.aws/credentials或实例角色)。
内容的提问来源于stack exchange,提问作者Ishan Kute
相关产品推荐
相关产品推荐

