Похоже, что ваше имя корзины не является действительным именем корзины S3, как указано в Руководство пользователя AWS :
Ниже приведены правила именования сегментов S3 во всех регионах AWS:
Имена сегментов должны быть уникальными для всех существующих имен сегментов в Amazon S3.
Имена сегментов должны соответствовать соглашениям об именах DNS.
Имена сегментов должны быть длиной не менее 3 и не более 63 символов.
Имена сегментов не должны содержать заглавных букв или подчеркиваний.
Имена контейнеров должны начинаться со строчной буквы или цифры.
Имена ковшей должны состоять из одной или нескольких меток. Смежные метки разделены одним периодом (.). Названия ведер могут
содержат строчные буквы, цифры и дефисы. Каждый ярлык должен
начинаться и заканчиваться строчной буквой или цифрой.
Имена сегментов не должны форматироваться как IP-адрес (например,
192.168.5.4).
При использовании виртуальных сегментов в стиле хостинга с Secure Sockets Layer (SSL), подстановочный сертификат SSL совпадает только с сегментами, которые не
содержать периоды. Чтобы обойти это, используйте HTTP или напишите свой
логика проверки сертификата. Мы рекомендуем не использовать
точки (".") в именах сегментов при использовании виртуального размещенного стиля
ковши.
В частности, обратите внимание на ту часть, которую я выделил жирным шрифтом, в которой упоминается, что имя сегмента не должно содержать заглавных букв, в то время как ваш план показывает, что вы используете заглавный символ в имени блока S3:
bucket: "" => "xsight-logging-bucket-Dev-us-east-1"
Terraform обычно может отлавливать эти типы ошибок в плановое время, так как проверка известна заранее. К сожалению, он также должен быть обратно совместимым, и до 1 марта 2018 года корзины в США-Восток-1 имели менее ограничительную схему именования блоков, поэтому проверить это нелегко в плановое время.
Кроме того, ваши журналы потока имеют состояние состязания, потому что Terraform пытается одновременно создать корзину S3 и журнал потока VPC.
Чтобы дать Terraform подсказку о порядке зависимости ресурсов, вы можете интерполировать выходные данные одного в параметры другого или использовать depends_on
, если это невозможно.
В вашем случае вам просто нужно обратиться к ресурсу S3 bucket в ресурсе журнала потока VPC:
resource "aws_flow_log" "example" {
log_destination = "${aws_s3_bucket.vpc_logs.bucket}"
log_destination_type = "${var.log_destination_type}"
traffic_type = "${var.traffic_type}"
vpc_id = "${var.vpc_id}"
}