Golang使用CDKTF导入azurerm provider报错‘undefined: azurerm’求助
问题:CDKTF Go代码中出现"undefined: azurerm"错误
我是Golang新手,正尝试使用CDKTF在Azure创建基础设施,编写了一段创建资源组的代码:
import ( "github.com/aws/constructs-go/constructs/v10" jsii "github.com/aws/jsii-runtime-go" "github.com/hashicorp/terraform-cdk-go/cdktf" ) func NewMyStack(scope constructs.Construct, id string) cdktf.TerraformStack { stack := cdktf.NewTerraformStack(scope, &id) //Initialise the provider azurerm.NewAzurermProvider(stack, jsii.String("azurerm"), &azurerm.AzurermProviderConfig{ Features: &azurerm.AzurermProviderFeatures{}, //Subscription: jsii.String(""), //Just for an example, login credential is coming from ARM* environment variables }) //Create a resource group rg := azurerm.NewResourceGroup(stack, jsii.String("test_rg"), &azurerm.ResourceGroupConfig{ //Name: n.ResourceGroupOutput(), //GOTO 26 Name: jsii.String("test-rg"), Location: jsii.String("westeurope"), }) //Output stuff cdktf.NewTerraformOutput(stack, jsii.String("names"), &cdktf.TerraformOutputConfig{ Value: &[]*string{rg.Name()}, }) return stack } func main() { app := cdktf.NewApp(nil) NewMyStack(app, "cdktf-azure-go") app.Synth() }
运行时出现如下错误:
Command output on stderr: # command-line-arguments ./main.go:15:2: undefined: azurerm ./main.go:16:14: undefined: azurerm ./main.go:20:8: undefined: azurerm
使用Go版本:go version go1.19.13
解决方案
安装AzureRM Provider依赖
代码里用到的azurerm包是CDKTF的AzureRM provider模块,需要先下载安装。在项目根目录执行:go get github.com/hashicorp/terraform-cdk-provider-azurerm-go/azurerm/v10(版本号可根据需求调整,v10对应兼容的Terraform AzureRM Provider版本)
在代码中导入azurerm包
在import代码块中添加对应的导入语句:import ( "github.com/aws/constructs-go/constructs/v10" jsii "github.com/aws/jsii-runtime-go" "github.com/hashicorp/terraform-cdk-go/cdktf" azurerm "github.com/hashicorp/terraform-cdk-provider-azurerm-go/azurerm/v10" // 新增导入 )同步依赖
执行命令整理并确认依赖:go mod tidy重新运行代码
现在再执行你的代码,azurerm未定义的错误就能解决了。
内容的提问来源于stack exchange,提问作者Mukul
相关产品推荐
相关产品推荐

