Terraform v1.8.0でリリースされそうなプロバイダ独自関数を試す
はじめに
こんにちは! SDBのどいです。
2024年03月06日に、terraform v1.8のベータ版がプレリリースされましたね!🎉
いくつか新機能がリリースされるようなので、先取りして試してみようと思います。
本記事では、新機能のうちプロバイダ独自関数について実際に試してみます。
🎉 新機能 🎉
provider独自関数を利用可能に
今まではTerraform標準の関数を利用できましたが、それに加えてプロバイダが独自関数を実装し利用できるようになります。
provider::provider_name::function_name()
と記述することで、プロバイダが提供する独自関数を呼び出すことができます。
provider
は固定のプレフィックスです。
provider_name
は、tfファイル内に定義したrequired_providers
ブロックに記述したプロバイダ名を指定します。
例えば、以下のようにAWS Providerを指定した場合、provider_name
はaws
になります。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.40.0"
}
}
}
function_name
はプロバイダが独自に定義した関数名を指定します。
AWS Providerの場合、ResourceやDataブロックと同様に、ドキュメントに関数の使用方法が記載されているので、そちらで確認できます。
v5.40.0
時点では、以下の2つの関数が使用できます。
以降は、v5.40.0
時点でリリースされている2つの関数を例に使い方を見ていきます。
arn_build
arnを構成する先頭のarn以外の5つの要素(partition
, service
, region
, account-id
, resource-id
)を引数に与えて、arnの文字列を生成する関数です。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.40.0"
}
}
}
output "arn_build" {
value = provider::aws::arn_build("aws", "iam", "", "***456789***", "user/doi")
}
% terraform plan
Changes to Outputs:
+ sg = "arn:aws:iam::***456789***:user/doi"
arn_parse
arnを引数に与えて、arnを構成する先頭のarn以外の5つの要素(partition
, service
, region
, account-id
, resource-id
)を持つ辞書変数に変換してくれる関数です。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.40.0"
}
}
}
output "arn_parse" {
value = provider::aws::arn_parse("arn:aws:iam::***456789***:user/doi")
}
% terraform plan
Changes to Outputs:
+ arn_parse = {
+ account_id = "***456789***"
+ partition = "aws"
+ region = ""
+ resource = "user/doi"
+ service = "iam"
}
もともとAWS Providerでは、aws_arn
というData Sourceが提供されており、ARNのパース自体は可能でしたが、
一度Dataブロックを定義してからプロパティを参照するという手順を踏まなければいけませんでした。
arn_parse
関数を使えばこのような手間が省けるかなと思います。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.40.0"
}
}
}
data "aws_arn" "arn" {
arn = "arn:aws:iam::***456789***:user/doi"
}
output "arn_data" {
value = data.aws_arn.arn
}
Changes to Outputs:
+ arn_data = {
+ account = "***456789***"
+ arn = "arn:aws:iam::***456789***:user/doi"
+ id = "arn:aws:iam::***456789***:user/doi"
+ partition = "aws"
+ region = ""
+ resource = "user/doi"
+ service = "iam"
}
まとめ
本記事では、terraform v1.8でリリース(されそうな)新機能のうち、プロバイダ独自関数の使用方法について紹介しました。
これからのv1.8の正式リリースに期待したいと思います。
Discussion