Terraform 地形aws_s3_bucket_通知现有bucket

Terraform 地形aws_s3_bucket_通知现有bucket,terraform,Terraform,我需要创建一个aws_s3_bucket_通知,该通知使用现有bucket(未在terraform脚本中定义) 我正在尝试以下配置: data "aws_s3_bucket" "terraform-bucket-name" { bucket = "account-bucket-name" } resource "aws_s3_bucket_notification" "bucket_notification" { bucket = "${data.aws_s3_bucket.te

我需要创建一个aws_s3_bucket_通知,该通知使用现有bucket(未在terraform脚本中定义)

我正在尝试以下配置:

data "aws_s3_bucket" "terraform-bucket-name" {
    bucket = "account-bucket-name"
}

resource "aws_s3_bucket_notification" "bucket_notification" {
   bucket = "${data.aws_s3_bucket.terraform-bucket-name.id}"

   lambda_function {
       lambda_function_arn = "${aws_lambda_function.something.arn}"
       events              = ["s3:ObjectCreated:*"]
   }
   depends_on = ["aws_lambda_function.something", "data.aws_s3_bucket.terraform-bucket-name"]
}
但我有一个错误:

放置S3通知配置时出错:InvalidArgument:无法 验证以下目标配置的步骤

也许“数据”不是定义现有bucket的正确方法。。。 有什么帮助吗?
谢谢

您必须将其定义为常规资源:

resource "aws_s3_bucket" "my_bucket" {
  bucket = "terraform-bucket-name"
然后您必须将其导入Terraform的状态:

terraform import aws_s3_bucket.my_bucket terraform-bucket-name
之后,
TerraformPlan
将向您展示真实世界与您的代码之间的差异,您应该解决这些差异。如果
terraformplan
未列出任何更改,则您的代码符合实际情况


请参见..

的末尾,您必须将其定义为常规资源:

resource "aws_s3_bucket" "my_bucket" {
  bucket = "terraform-bucket-name"
然后您必须将其导入Terraform的状态:

terraform import aws_s3_bucket.my_bucket terraform-bucket-name
之后,
TerraformPlan
将向您展示真实世界与您的代码之间的差异,您应该解决这些差异。如果
terraformplan
未列出任何更改,则您的代码符合实际情况


请看..

的结尾。下面的答案是解决问题的正确方法。下面的答案是解决问题的正确方法。嗨,谢谢你的回答。你的解决方案是有效的。问题是,我需要为不同的环境实现自动化,所以我需要一些可以多次启动的东西。在使用terraform导入之前,我可以验证资源是否存在。编写一些为您生成代码的包装器?否则您可以尝试,它可以根据现有资源生成TF代码。好的,我试试。谢谢嗨,谢谢你的回复。你的解决方案是有效的。问题是,我需要为不同的环境实现自动化,所以我需要一些可以多次启动的东西。在使用terraform导入之前,我可以验证资源是否存在。编写一些为您生成代码的包装器?否则您可以尝试,它可以根据现有资源生成TF代码。好的,我试试。谢谢