Terraform同文件声明资源仍无法找到问题求助
解决Terraform无法找到aws_iam_role资源的问题
嘿,我一眼就揪出问题啦!你代码里声明的IAM角色名称和引用时用的名字根本对不上,这才导致Terraform找不到对应的资源。
咱们仔细看看:
- 你在main.tf里实际定义的IAM资源是:
resource "aws_iam_role" "newsapi_lambda_codebuild" { ... } - 但你引用的时候写的却是:
role_arn = "${aws_iam_role.newsapi_lambda_codepipeline.arn}"
Terraform对资源标识符(就是resource_type后面的那个名称)是严格匹配的,拼写、大小写都不能错,所以它自然找不到名为newsapi_lambda_codepipeline的aws_iam_role资源。
给你两种解决办法,选一种就行:
- 修改引用语句,把引用里的名称改成和实际资源一致的
newsapi_lambda_codebuild,如果是Terraform 0.12及以上版本,还可以用更简洁的新语法:// 旧语法 role_arn = "${aws_iam_role.newsapi_lambda_codebuild.arn}" // 新语法(推荐) role_arn = aws_iam_role.newsapi_lambda_codebuild.arn - 修改资源定义的名称,如果你本来就想把这个IAM角色命名为
newsapi_lambda_codepipeline,那就直接改资源声明的标识符:
这样原来的引用语句就能正常工作了。resource "aws_iam_role" "newsapi_lambda_codepipeline" { ... }
以后写配置的时候多留意这种小笔误,很容易犯但也很好改~
内容的提问来源于stack exchange,提问作者Defozo
相关产品推荐
相关产品推荐

