質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

受付中

Terraform AWSでのデフォルトリージョン以外のリソースの定義方法について

GotHokLin
GotHokLin

総合スコア32

Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0評価

1クリップ

430閲覧

投稿2022/06/14 12:31

前提

現在、Terraformを利用してAWSのGuardDutyの有効化を行っております。

GuardDutyは有効にできるリージョン全てにおいて有効化しようとしております。
リージョンは複数ありますので、Terraformでのリソース aws_guardduty_detector の設定については、モジュール化しており、リージョンごとにそのモジュールを呼び出しております。

リージョンについては、provider "aws" で地域名をエイリアスとして指定して、モジュールを呼び出す際にそのエイリアスを指定しております。

リージョンの定義とモジュールの呼び出しは以下のようにしております。

# リージョン指定 ## デフォルトリージョン provider "aws" { region = "ap-northeast-1" } ## バージニアリージョン provider "aws" { alias = "virginia" region = "us-east-1" } ## 以下他の地域のリージョンも定義 …… # GuardDuty有効化モジュール呼び出し module "tokyo-gd" { source = "./modules/aws/guardduty" } module "virginia-gd" { source = "./modules/aws/guardduty" providers = { aws = aws.virginia } }

このようにしてapplyしたところ、目的通り、各リージョンでGuardDutyは有効になったのですが、以下のようにWarningが出ました。

Warning: Reference to undefined provider on main.tf line 8, in module "virginia-gd": 8: aws = aws.virginia There is no explicit declaration for local provider name "aws" in module.virginia-gd, so Terraform is assuming you mean to pass a configuration for "hashicorp/aws". If you also control the child module, add a required_providers entry named "aws" with the source address "hashicorp/aws". (and 15 more similar warnings elsewhere)

(上記ではTerraformソース8行目としてWarningが出ており、前述のコードと行数が異なりますが、前述のコードはサンプルで抜き出した物での差異ということでご了承ください)

実現したいこと

Warningですのでそこまで問題はないのかもしれませんが、文面としてはきちんと定義されていないという状況かと思いますので、正しいリージョンの指定を行いたいと考えております。

現在のTerraform、AWSプロバイダのバージョンでの正しいデフォルトではないリージョンの指定の仕方をお教え頂けたら幸いです。

補足情報(FW/ツールのバージョンなど)

Terraform v1.2.2
provider registry.terraform.io/hashicorp/aws v4.18.0

他に必要な情報等ありましたら、コメントでお教えください。追記したいと思います。

以上、よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。