以下の内容はhttps://www.bioerrorlog.work/entry/get-tf-aws-regionより取得しました。


TerraformでAWSリージョンを取得する

TerraformでAWSリージョンを取得する方法の備忘録です。

はじめに

TerraformでAWSリソースを書いていると、ARNの指定などでアカウントidやリージョン名を取得したくなるときがあります。

以前、TerraformでAWSアカウントidを取得する方法を書きましたが、リージョンを取得する方法はいつも都度ググっていたので、備忘録を残します。

The English translation of this post is here.

TerraformでAWSリージョンを取得する

やり方

aws_regionのdata sourceを使って、AWSリージョン名を取得できます。

data "aws_region" "current" {}

このようにdata sourceを定義したら、

data.aws_region.current.name

の形式でリージョン名を取得できます。

# 使用例
source_arn = "arn:aws:events:${data.aws_region.current.name}:123456789012:rule/RunDaily"


必要に応じてリージョン名をlocal変数に格納しておくのも、可読性と変更容易性が上がるのでおすすめです。

locals {
  region = data.aws_region.current.name
}

おまけ: Terraformソースコードを読む

せっかくなので、このaws_region data sourceの実装をソースコードから読んでみます。

まず場所としては、下記のコードがaws_region data sourceを実装してそうです。

github.com

この中のRead関数で、aws_region data sourceの実態が実装されています。

プロバイダの現在のリージョンを取得する部分のコードを抜粋します。

   // Default to provider current region if no other filters matched
    if region == nil {
        matchingRegion, err := FindRegionByName(d.Meta().Region)

        if err != nil {
            response.Diagnostics.AddError("finding Region by name", err.Error())

            return
        }

        region = matchingRegion
    }

aws_region data sourceの引数に何も指定がない場合、メタデータからproviderの現在のリージョンが取得されているのがわかります。

おわりに

以上、TerraformでAWSリージョンを取得する方法の備忘録をまとめて、ついでにソースコードを読んでみました。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

参考




以上の内容はhttps://www.bioerrorlog.work/entry/get-tf-aws-regionより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14