Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 在terraform中为S3存储桶使用点表示法-导致输出错误_Amazon S3_Terraform - Fatal编程技术网

Amazon s3 在terraform中为S3存储桶使用点表示法-导致输出错误

Amazon s3 在terraform中为S3存储桶使用点表示法-导致输出错误,amazon-s3,terraform,Amazon S3,Terraform,地形0.9.2,AWS,OS X 10.12.5 S3存储桶中的main.tf、shared.tfstate: #================= # Terraform #================= terraform { backend "s3" { bucket = "com.whd-design.terraform-s3-state-bucket" key = "tfState/htmt-book" region = "

地形0.9.2,AWS,OS X 10.12.5 S3存储桶中的main.tf、shared.tfstate:

#=================
# Terraform
#=================
terraform {
  backend "s3" {
    bucket     = "com.whd-design.terraform-s3-state-bucket"
    key        = "tfState/htmt-book"
    region     = "eu-west-2"
    encrypt    = true
    lock_table = "terraform-state-lock"
  }
}
这很好,状态被写入bucket(我可以看到随着更改而出现的后续版本),并且创建了DynamoDB记录。但是,尝试在输出中使用点符号bucket name会导致错误:

output "State_S3_Bucket_ARN" {
  value = "${aws_s3_bucket.com.whd-design.terraform-s3-state-bucket.arn}"
}

* output 'State_S3_Bucket_ARN': unknown resource 'aws_s3_bucket.com' referenced in variable aws_s3_bucket.com.whd-design.terraform-s3-state-bucket.arn
名称中没有点的其他输出语句可以正常工作-只是不能使用点格式吗?(尽管实际创建和使用S3对象很奇怪)。是否有一些转义可以在资源名称周围使用


非常感谢

好的,我试图引用一个在地形状态下不存在的对象。它存在于AWS上(由不同的TF计划创建)。解决方案:

  • 导入它
    terraform导入aws\u s3\u bucket.terraform\u s3\u state\u bucket com.whd design.terraform-s3-state-bucket
    ,使用有效的TF资源名称
  • 添加从另一个.TF文件复制的定义
  • 更正输出以使用TF资源名称而不是AWS资源名称
  • 确保在应用terraform之前执行步骤2,它会尝试销毁“孤儿”S3 都分类好了