代码之家  ›  专栏  ›  技术社区  ›  user461112

Terraform和S3-如何将文件上载到现有的bucket

  •  0
  • user461112  · 技术社区  · 5 年前

    terraform {
      backend "s3" {
        bucket = "terraformtests"
        key    = "terraformstate.tf"
        region = "us-east-1"
      }
    }
    
    
    resource "aws_s3_bucket_object" "terraformtests" {
      bucket = "terraformtests"
      key    = "test/prod/1000/keys"
      source = "deploy"
      etag   = "${md5(file("keys"))}"
    
    }
    

    这就是我所拥有的。它在第一次运行时运行良好,并将其上载到键空间“1000”。当我编辑它并用1001重新运行时,脚本试图销毁test/prod/1000/keys中以前创建的文件。我想做的就是

    • 导入现有表状态而不重新创建它
    0 回复  |  直到 5 年前
        1
  •  0
  •   max    5 年前

    你得到的结果就是从Terraform得到的结果。

    TF维护着 .t状态 文件夹。它们是上次同步时基础设施的镜像。

    中描述了基础设施的所需状态 .tf公司 文件夹。

    terraform plan terraform apply 命令比较 .tf公司 .t状态 文件夹。然后, 中存在的任何资源 而不是在 .tf公司 被摧毁了

    在你的情况下,它有 在里面 从上一次运行中,但不是在 .tf公司 因为你把它编辑成 .

    1. 使用AWS CLI 正如温斯顿在评论中建议的那样
    2. 添加其他资源 而不是编辑你的键空间1001

    而且,我注意到你

    source = "deploy"
    etag = "${md5(file("keys"))}"
    

    通常,它们应该引用同一个文件:

    source = "readme.md"
    etag = "${filemd5("readme.md")}"