如何将现有ECR仓库导入Terraform?遇正则匹配错误求助
解决Terraform导入ECR仓库时的正则约束错误
问题场景
尝试导入现有ECR仓库时,编写了以下Terraform配置:
import { to = aws_ecr_repository.tamarack_api id = "arn:aws:ecr:us-west-2:xxxxxxxxxxxx:repository/tamarack-api" } resource "aws_ecr_repository" tamarack_api { name = "tamarack-api" }
执行terraform plan时触发错误:
Error: reading ECR Repository (arn:aws:ecr:us-west-2:xxxxxxxxxxxx:repository/tamarack-api): InvalidParameterException: Invalid parameter at 'repositoryName' failed to satisfy constraint: 'must satisfy regular expression '(?:[a-z0-9]+(?:[.-][a-z0-9]+)/)*[a-z0-9]+(?:[.-][a-z0-9]+)*''
手动用Go语言在regex101测试tamarack-api符合该正则,但错误依然存在。
解决方案
将import块中的id值替换为仓库名称,而非ARN:
import { to = aws_ecr_repository.tamarack_api id = "tamarack-api" } resource "aws_ecr_repository" tamarack_api { name = "tamarack-api" }
原因说明
Terraform的aws_ecr_repository资源在导入时,id参数预期接收的是ECR仓库名称,而非完整ARN。虽然你的ARN格式正确,但Terraform在解析ARN提取仓库名的过程中可能出现异常,导致传递给AWS API的仓库名不符合约束(比如意外引入多余字符)。
如果需要验证,可以先通过命令行手动执行导入:
terraform import aws_ecr_repository.tamarack-api tamarack-api
确认导入成功后,再使用配置文件中的import块即可正常执行terraform plan。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

