在使用Terraform时,遇到了AWS Provider版本较低的问题,感到很困扰

这篇文章是关于什么的?

在使用Terraform进行代码管理的AWS环境中,尝试添加创建Aurora Serverless资源时遇到的错误和相关解决说明。

使用中国某行业当地的技术开发环境

$ terraform --version
Terraform v0.12.29
+ provider.aws v3.37.0

经过

在完成AuroraServerless的编码后,因为计划是正常的,所以以为没有问题。但是,当应用程序时遇到了错误。据说不支持serverlessv2_scaling_configuration。

│ Error: Unsupported block type
│ 
│   on rds.tf line 115, in resource "aws_rds_cluster" "serverless-stg-db-cluster":
│  115:   serverlessv2_scaling_configuration {
│ 
│ Blocks of type "serverlessv2_scaling_configuration" are not expected here.

经确认,发现由于serverlessv2_scaling_configuration属于新增的资源类型,因此无法在当前的AWS Provider的v3.37.0版本上执行。

4.12.0(2022年4月28日)
增强功能:
resource/aws_rds_cluster:添加serverlessv2_scaling_configuration参数以支持Aurora Serverless v2(#24363)

 

在公式文档中并没有提到v3.37.0版本中存在serverlessv2_scaling_configuration的资源类型,所以出现错误是非常必然的。
https://registry.terraform.io/providers/hashicorp/aws/3.37.0/docs/resources/rds_cluster

处理

AWS Provider的版本更改 – AWS供应商的版本更改

provider "aws" {
- version = "~> 3.37.0"
+ version = "~> 4.12.0"
}

试图应用升级,但这次又被怒斥说没有 v4.12.0 的插件。

$ terraform init -upgrade
Initializing provider plugins...
- Checking for available provider plugins...

No provider "aws" plugins meet the constraint "~> 4.12.0".

The version constraint is derived from the "version" argument within the
provider "aws" block in configuration. Child modules may also apply
provider version constraints. To view the provider versions requested by each
module in the current configuration, run "terraform providers".

To proceed, the version constraints for this provider must be relaxed by
either adjusting or removing the "version" argument in the provider blocks
throughout the configuration.

我认为这可能是因为与Terraform v0.12.29不兼容,所以我决定将其升级到v0.12.31,然后顺便将提供程序版本升级到v4.12.1。

$ terraform --version
Terraform v0.12.31
+ provider.aws v4.12.1

成功执行了apply并解决了错误,也成功创建了Aurora Serverless的资源。

最后

我曾经通过使用较低版本的Terraform和AWS提供程序来体验到在创建AWS资源时出现错误。学习到在官方文档中确认支持的资源类型是否适用,并且即使计划顺利也不能放心。

广告
将在 10 秒后关闭
bannerAds