Terraform 在索引处导入资源

时间:2021-07-19 20:41:33

标签: terraform

我的 terraform 正在尝试创建以下 s3 存储桶资源。

  # module.storage.module.s3_bucket[14].aws_s3_bucket.this[0] will be created
  + resource "aws_s3_bucket" "this" {
      + acceleration_status         = (known after apply)
      + acl                         = "private"
      + arn                         = (known after apply)
      + bucket                      = "assets-bucket"
      + bucket_domain_name          = (known after apply)
      + bucket_regional_domain_name = (known after apply)
      + force_destroy               = false
      + hosted_zone_id              = (known after apply)
      + id                          = (known after apply)
      + region                      = (known after apply)
      + request_payer               = (known after apply)
      + website_domain              = (known after apply)
      + website_endpoint            = (known after apply)

      + server_side_encryption_configuration {
          + rule {
              + apply_server_side_encryption_by_default {
                  + sse_algorithm = "AES256"
                }
            }
        }

      + versioning {
          + enabled    = (known after apply)
          + mfa_delete = (known after apply)
        }
    }

  # module.storage.module.s3_bucket[14].aws_s3_bucket_public_access_block.this[0] will be created
  + resource "aws_s3_bucket_public_access_block" "this" {
      + block_public_acls       = false
      + block_public_policy     = false
      + bucket                  = (known after apply)
      + id                      = (known after apply)
      + ignore_public_acls      = false
      + restrict_public_buckets = false
    }

我正在尝试将存储桶导入我的状态文件。但是,我似乎无法导入该数据。据推测,它不喜欢索引。不过,我正在查看的文档表明这应该有效。

terraform import  module.storage.module.s3_bucket[14].aws_s3_bucket.this  assets-bucket --state=./terraform.tfstate
zsh: no matches found: module.storage.module.s3_bucket[14].aws_s3_bucket.this

# this attempt also fails
terraform import  module.storage.module.s3_bucket[14].aws_s3_bucket.this[0] assets-bucket --state=./terraform.tfstate
zsh: no matches found: module.storage.module.s3_bucket[14].aws_s3_bucket.this[0]

1 个答案:

答案 0 :(得分:1)

现代 shell 将方括号视为 shell 命令的一部分,而不是另一个脚本/应用程序的输入。这就是您从 zsh 而不是 Terraform 收到错误的原因。

zsh: no matches found: module.storage.module.s3_bucket[14].aws_s3_bucket.this

如果在值周围加上单引号,它会将其视为 import 的参数,而不是 ZSH 的命令。

terraform import  'module.storage.module.s3_bucket[14].aws_s3_bucket.this'  assets-bucket --state=./terraform.tfstate

如果您想知道当您不将 ' 放在它周围时它会做什么,请运行 set -x 启用调试模式,它将打印 ZSH 对所有参数所做的事情。

使用 set +x 将其关闭。

相关问题