当使用Terraform工作区时,不创建 S3状态文件



我使用S3后端为我的Terraform脚本:

terraform {
backend "s3" {
bucket = "mybucket"
key    = "path/to/my/key"
region = "us-east-1"
}
}

如果我使用多个工作区,所有工作区的状态是否都存储在上面提到的S3后端状态文件中?

我尝试创建2个工作区,状态文件甚至没有在上面提到的S3桶上创建。

我错过了什么?

Terraform将在bucket中创建状态文件,这取决于您选择的工作空间,并带有工作空间密钥前缀,默认设置将给出如下内容:

env:/<my workspace>/path/to/my/key

这意味着如果您运行terraform workspace select <my workspace>terraform apply,所选工作区的状态文件将在上述文件夹中结束。

然而,要在S3存储桶上存储状态,您需要自己创建S3存储桶(Terraform期望它存在)。

可以使用以下命令:

aws s3 mb s3://<my bucket> --region <my region>
aws s3api put-bucket-versioning 
--region <my region> 
--bucket <my bucket> 
--versioning-configuration "Status=Enabled"
aws s3api put-public-access-block 
--region <my region> 
--bucket <my bucket> 
--public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"

Terraform还建议使用DynamoDB表进行锁定,您可以像这样创建它:

aws dynamodb create-table 
--region <my region> 
--table-name <my dynamodb lock table> 
--attribute-definitions AttributeName=LockID,AttributeType=S 
--key-schema AttributeName=LockID,KeyType=HASH

您需要在后端配置中添加DynamoDB锁表的名称,然后使用dynamodb_table = "<my dynamodb lock table>"

相关内容

  • 没有找到相关文章