ephemeral "vault_kv_secret_v2" "argo_user" { mount = "secret" name = var.argo_vault_secret_path } locals { argo_secret_access_key = ephemeral.vault_kv_secret_v2.argo_user.data["secretAccessKey"] } resource "versitygw_user" "argo" { access_key_id = var.argo_principal secret_access_key = local.argo_secret_access_key role = "user" } resource "minio_s3_bucket" "argo" { bucket = var.argo_bucket_name } resource "minio_s3_bucket_policy" "argo" { bucket = minio_s3_bucket.argo.bucket depends_on = [ versitygw_user.argo, ] policy = jsonencode({ Version = "2012-10-17" Statement = [ { Sid = "ArgoBucketAccess" Effect = "Allow" Principal = var.argo_principal Action = [ "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads", ] Resource = [ "arn:aws:s3:::${var.argo_bucket_name}", ] }, { Sid = "ArgoObjectAccess" Effect = "Allow" Principal = var.argo_principal Action = [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:GetObjectAcl", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl", ] Resource = [ "arn:aws:s3:::${var.argo_bucket_name}/*", ] }, ] }) }