例えば以下のような定義があったとして、
provider "aws" { region = "ap-northeast-1" } resource "aws_s3_bucket" "kuredev" { count = 1 bucket = "test-terraform-test-kuredev.info" } resource "aws_s3_bucket" "kuredev2" { count = 1 bucket = "test-terraform-test-kuredev.info2" } output "s3_bucket" { value = aws_s3_bucket.kuredev[0].bucket }
aws_s3_bucket.kuredev
を import する。
% terraform import aws_s3_bucket.kuredev test-terraform-test-kuredev.info
次に kuredev2 を import しようとすると、
% terraform import aws_s3_bucket.kuredev2 test-terraform-test-kuredev.info2
以下のようにエラーになる。
│ Error: Invalid index │ │ on main.tf line 24, in output "s3_bucket": │ 24: value = aws_s3_bucket.kuredev[0].bucket │ ├──────────────── │ │ aws_s3_bucket.kuredev is empty tuple │ │ The given key does not identify an element in this collection value: the collection has │ no elements.
これは import したリソースが count のあるリソースにもかかわらず index が無いためにエラーとなるようだ。
% terraform state list
aws_s3_bucket.kuredev
解消のためには import した後に terraform refresh
するとなぜか index が付く。
% terraform refresh aws_s3_bucket.kuredev[0]: Refreshing state... [id=test-terraform-test-kuredev.info] Outputs: s3_bucket = "test-terraform-test-kuredev.info" % terraform state list aws_s3_bucket.kuredev[0]
import する時に index をつければ良さそうなものだが、なぜか import 時にエラーがでる。
% terraform import aws_s3_bucket.kuredev[0] test-terraform-test-kuredev.info zsh: no matches found: aws_s3_bucket.kuredev[0]