ephemeral "vault_kv_secret_v2" "terraform_state_user" { mount = "secret" name = var.terraform_state_vault_secret_path } locals { terraform_state_secret_access_key = ephemeral.vault_kv_secret_v2.terraform_state_user.data["secretAccessKey"] } resource "versitygw_user" "terraform_state" { access_key_id = var.terraform_state_principal secret_access_key = local.terraform_state_secret_access_key role = "user" } resource "minio_s3_bucket" "terraform_state" { bucket = var.terraform_state_bucket_name } resource "minio_s3_bucket_policy" "terraform_state" { bucket = minio_s3_bucket.terraform_state.bucket depends_on = [ versitygw_user.terraform_state, ] policy = jsonencode({ Version = "2012-10-17" Statement = [ { Sid = "TerraformStateBucketList" Effect = "Allow" Principal = var.terraform_state_principal Action = [ "s3:ListBucket", ] Resource = [ "arn:aws:s3:::${var.terraform_state_bucket_name}", ] }, { Sid = "TerraformStateObjectReadWrite" Effect = "Allow" Principal = var.terraform_state_principal Action = [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", ] Resource = [ "arn:aws:s3:::${var.terraform_state_bucket_name}/*", ] }, ] }) }