我的 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]
答案 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
将其关闭。