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

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

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

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

AWS(Amazon Web Services)

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

Q&A

1回答

189閲覧

terraformを利用しawsの構築に関する問い合わせ

cadce31415

総合スコア14

Terraform

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

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2024/01/26 05:24

編集2024/01/26 05:26

実現したいこと

vpcやセキュリティグループに関しては省略します。

terraform

1resouce "aws=subnet" "private_subnets"{ 2 vpc_id = aws_vpc_id.id 3 for_each = var.subnets.private_subnets 4 cidr_block = each.value.cidr 5 availability_zone = each.varlue.az 6}

このように別で用意したvaluesからfor_eachを使って複数のsubnetを作っております。
その後、1番目に作られたsubnetに対してec2を作成したいのですがエラーになります。

terraform

1resource "aws_instance" "ec2"{ 2 ami = **** 3 subnet_id = aws_subnet.private_subnets[0].idresouceresouceresouce 4}

配列のように0番目で呼んでいるのですがここでエラーになります。
配列番号では呼ぶことはできないようですが、どうにか実装する方法はないのでしょうか?

発生している問題・分からないこと

terraform

1subnet_id = aws_subnet.private_subnets[0].idresouceresouceresouce

ここでエラーが発生しapplyができない。

エラーメッセージ

error

1The given key does not identify an element in this collection value. 2An object only supports looking up attributes by name, not by numeric index.

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

配列で呼び出せる情報があり、模作したのですがエラーになってしまいます。

補足

特になし

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

for_eachを使っている場合、for_eachで作成される各リソースはlistではなくmapとして定義されます。
listになるのはforとcountを使っている場合ですね。
なので、aws_subnet.private_subnets[0]のように数字を指定しても参照できません。

var.subnets.private_subnetsで渡している値がmapのkeyになっているのでそちらを指定してください。
具体的な値がわからなければterraform state listで既にapply済みのリソース(tfstateに入っているリソース)の名前を出力できるのでそちらを見てみてください。

投稿2024/01/26 06:00

yu_1985

総合スコア7447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問