【问题标题】:terraform with DynamoDB backend: 400 Bad Request when creating new workspace带有 DynamoDB 后端的 terraform:创建新工作区时出现 400 Bad Request
【发布时间】:2020-12-17 17:12:24
【问题描述】:

我有在 DynamoDB 中保持锁的 terraform 堆栈:

terraform {
  backend "s3" {
    bucket  = "bucketname"
    key     = "my_key"
    encrypt = "true"
    role_arn = "arn:aws:iam::11111111:role/my_role"
    dynamodb_table = "tf-remote-state-lock"
  }
}

当我运行 terraform workspace new test 时,它会失败并出现(相当误导的)错误:

failed to lock s3 state: 2 errors occurred:
* ResourceNotFoundException: Requested resource not found
* ResourceNotFoundException: Requested resource not found

如果我打开TF_LOG=DEBUG,那么我会看到400 Bad Request(更多详情on pastebin

我做错了什么以及如何解决?

【问题讨论】:

  • 您的帐户中是否存在该表?该角色可以访问它吗?
  • 绝对是,是的。

标签: amazon-dynamodb terraform terraform-provider-aws


【解决方案1】:

解决方案:terraform workspace whatsoever 应该只在terraform init 之后朗姆酒。如果您设置了TF_WORKSPACE,您可能会在tf init 期间出错,说工作空间尚不存在,因此您可能会在tf init 之前尝试朗姆酒tf ws new。不要这样做,只需仅在tf init 之后设置TF_WORKSPACE

【讨论】:

    【解决方案2】:

    您可能没有创建 AWS 资源。 documentation 对 s3 存储桶说了以下内容:

    这假设我们创建了一个名为 mybucket 的存储桶。

    我认为第二条消息来自未创建或未正确配置的 DynamoDb 表。该文档对使用 DynamoDb 进行锁定和一致性进行了如下说明:

    dynamodb_table -(可选)用于状态的 DynamoDB 表的名称 锁定和一致性。该表必须有一个名为 带有字符串类型的 LockID。如果没有配置,状态锁定将是 已禁用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2011-05-31
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多