【问题标题】:terraform aws_s3_bucket_notification existing bucketterraform aws_s3_bucket_notification 现有存储桶
【发布时间】:2019-07-18 23:12:24
【问题描述】:

我需要创建一个使用现有存储桶(未在 terraform 脚本中定义)的 aws_s3_bucket_notification

我正在尝试这个配置:

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: Unable 验证以下目标配置

也许“数据”不是定义现有存储桶的正确方法... 有什么帮助吗? 谢谢!

【问题讨论】:

  • 下面的答案是正确的解决方法。

标签: terraform


【解决方案1】:

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

resource "aws_s3_bucket" "my_bucket" {
  bucket = "terraform-bucket-name"

然后你必须将它导入到 Terraform 的状态中:

terraform import aws_s3_bucket.my_bucket terraform-bucket-name

之后,terraform plan 将向您展示现实世界与您的代码之间的差异,您应该解决这些差异。如果terraform plan 未列出任何更改,则您的代码符合实际情况。

查看documentation..的最后。

【讨论】:

  • 您好,感谢您的回复。您的解决方案正在运行。问题是我需要针对不同的环境自动化它,所以我需要可以启动超过 1 次的东西。我可以在使用 terraform import 之前验证资源是否存在。
  • 编写一些为您生成代码的包装器?否则你可以试试terraforming,它可以根据现有资源生成TF代码。
  • 好的,我试试。谢谢!
猜你喜欢
  • 2020-06-15
  • 1970-01-01
  • 2021-08-14
  • 2020-05-09
  • 1970-01-01
  • 2020-12-21
  • 2019-05-14
  • 2019-09-14
  • 2020-11-05
相关资源
最近更新 更多