#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:
Современные оболочки рассматривают квадратные скобки как часть команды оболочки, а не как ввод в другой скрипт/приложение. Вот почему вы получаете ошибку от zsh
, а не от Терраформирования.
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
, чтобы выключить его.
Комментарии:
1. Спасибо! также я узнал, что опция —state появляется после «импорта терраформ», а не в конце.