|
1 | 1 | resource "aws_s3_bucket" "gitpod-storage" {
|
2 |
| - count = var.enable_external_storage ? 1 : 0 |
| 2 | + count = var.create_external_storage ? 1 : 0 |
3 | 3 |
|
4 | 4 | force_destroy = true
|
5 | 5 | bucket = "bucket-${var.cluster_name}"
|
6 |
| - acl = "private" |
7 | 6 | }
|
8 | 7 |
|
9 |
| -resource "aws_s3_bucket" "gitpod-registry-backend" { |
10 |
| - count = var.enable_external_storage_for_registry_backend ? 1 : 0 |
| 8 | +resource "aws_s3_bucket_acl" "gitpod-storage" { |
| 9 | + count = var.create_external_storage ? 1 : 0 |
11 | 10 |
|
12 |
| - force_destroy = true |
13 |
| - bucket = "reg-bucket-${var.cluster_name}" |
14 |
| - acl = "private" |
| 11 | + bucket = aws_s3_bucket.gitpod-storage[count.index].id |
| 12 | + acl = "private" |
15 | 13 | }
|
16 | 14 |
|
17 | 15 | resource "aws_s3_bucket_versioning" "storage" {
|
18 |
| - count = var.enable_external_storage ? 1 : 0 |
| 16 | + count = var.create_external_storage ? 1 : 0 |
19 | 17 |
|
20 | 18 | bucket = aws_s3_bucket.gitpod-storage[0].id
|
21 | 19 | versioning_configuration {
|
22 | 20 | status = "Enabled"
|
23 | 21 | }
|
24 | 22 | }
|
25 | 23 |
|
26 |
| -resource "aws_s3_bucket_versioning" "registry" { |
27 |
| - count = var.enable_external_storage_for_registry_backend ? 1 : 0 |
28 |
| - |
29 |
| - bucket = aws_s3_bucket.gitpod-registry-backend[0].id |
30 |
| - versioning_configuration { |
31 |
| - status = "Enabled" |
32 |
| - } |
33 |
| -} |
34 |
| - |
35 | 24 | data "aws_iam_policy_document" "s3_policy" {
|
36 |
| - count = var.enable_external_storage ? 1 : 0 |
| 25 | + count = var.create_external_storage ? 1 : 0 |
37 | 26 | statement {
|
38 |
| - actions = ["s3:*"] |
39 |
| - resources = ["*"] |
| 27 | + actions = [ |
| 28 | + "s3:PutObject", |
| 29 | + "s3:ListMultipartUploadParts", |
| 30 | + "s3:GetObject", |
| 31 | + "s3:DeleteObject", |
| 32 | + "s3:AbortMultipartUpload" |
| 33 | + ] |
| 34 | + resources = [ |
| 35 | + "arn:aws:s3:::${aws_s3_bucket.gitpod-storage[count.index].id}", |
| 36 | + ] |
40 | 37 | effect = "Allow"
|
41 | 38 | }
|
42 | 39 | }
|
43 | 40 |
|
44 | 41 | resource "aws_iam_policy" "policy" {
|
45 |
| - count = var.enable_external_storage ? 1 : 0 |
| 42 | + count = var.create_external_storage ? 1 : 0 |
46 | 43 | name = "spolicy-${var.cluster_name}"
|
47 | 44 | description = "Gitpod ${var.cluster_name} object storage bucket policy"
|
48 | 45 | policy = data.aws_iam_policy_document.s3_policy[0].json
|
49 | 46 | }
|
50 | 47 |
|
51 | 48 | resource "aws_iam_user" "bucket_storage" {
|
52 |
| - count = var.enable_external_storage ? 1 : 0 |
| 49 | + count = var.create_external_storage ? 1 : 0 |
53 | 50 | name = "suser-${var.cluster_name}"
|
54 | 51 |
|
55 | 52 | }
|
56 | 53 |
|
57 | 54 | resource "aws_iam_user_policy_attachment" "attachment" {
|
58 |
| - count = var.enable_external_storage ? 1 : 0 |
| 55 | + count = var.create_external_storage ? 1 : 0 |
59 | 56 | user = aws_iam_user.bucket_storage[0].name
|
60 | 57 | policy_arn = aws_iam_policy.policy[0].arn
|
61 | 58 | }
|
62 | 59 |
|
| 60 | +resource "aws_iam_user_policy_attachment" "full_access_attachment" { |
| 61 | + count = var.create_external_storage ? 1 : 0 |
| 62 | + user = aws_iam_user.bucket_storage[0].name |
| 63 | + policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess" |
| 64 | +} |
| 65 | + |
63 | 66 | resource "aws_iam_access_key" "bucket_storage_user" {
|
64 |
| - count = var.enable_external_storage ? 1 : 0 |
| 67 | + count = var.create_external_storage ? 1 : 0 |
65 | 68 | user = aws_iam_user.bucket_storage[0].name
|
66 | 69 | }
|
| 70 | + |
| 71 | +// s3 bucket for registry backend |
| 72 | + |
| 73 | +resource "aws_s3_bucket" "gitpod-registry-backend" { |
| 74 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 75 | + |
| 76 | + force_destroy = true |
| 77 | + bucket = "reg-bucket-${var.cluster_name}" |
| 78 | +} |
| 79 | + |
| 80 | +resource "aws_s3_bucket_acl" "gitpod-registry-storage" { |
| 81 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 82 | + |
| 83 | + bucket = aws_s3_bucket.gitpod-registry-backend[count.index].id |
| 84 | + acl = "private" |
| 85 | +} |
| 86 | + |
| 87 | +resource "aws_s3_bucket_versioning" "registry" { |
| 88 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 89 | + |
| 90 | + bucket = aws_s3_bucket.gitpod-registry-backend[0].id |
| 91 | + versioning_configuration { |
| 92 | + status = "Enabled" |
| 93 | + } |
| 94 | +} |
| 95 | + |
| 96 | +data "aws_iam_policy_document" "s3_policy_registry" { |
| 97 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 98 | + statement { |
| 99 | + actions = [ |
| 100 | + "s3:PutObject", |
| 101 | + "s3:ListMultipartUploadParts", |
| 102 | + "s3:GetObject", |
| 103 | + "s3:DeleteObject", |
| 104 | + "s3:AbortMultipartUpload" |
| 105 | + ] |
| 106 | + resources = [ |
| 107 | + "arn:aws:s3:::${aws_s3_bucket.gitpod-registry-backend[count.index].id}", |
| 108 | + ] |
| 109 | + effect = "Allow" |
| 110 | + } |
| 111 | +} |
| 112 | + |
| 113 | +resource "aws_iam_policy" "policy_registry" { |
| 114 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 115 | + name = "registry-policy-${var.cluster_name}" |
| 116 | + description = "Gitpod ${var.cluster_name} registry backend storage bucket policy" |
| 117 | + policy = data.aws_iam_policy_document.s3_policy_registry[count.index].json |
| 118 | +} |
| 119 | + |
| 120 | +resource "aws_iam_user" "bucket_registry" { |
| 121 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 122 | + name = "registry-user-${var.cluster_name}" |
| 123 | + |
| 124 | +} |
| 125 | + |
| 126 | +resource "aws_iam_user_policy_attachment" "registry_attachment" { |
| 127 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 128 | + user = aws_iam_user.bucket_registry[count.index].name |
| 129 | + policy_arn = aws_iam_policy.policy_registry[count.index].arn |
| 130 | +} |
| 131 | + |
| 132 | +resource "aws_iam_user_policy_attachment" "full_access_registry_attachment" { |
| 133 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 134 | + user = aws_iam_user.bucket_registry[count.index].name |
| 135 | + policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess" |
| 136 | +} |
| 137 | + |
| 138 | +resource "aws_iam_access_key" "bucket_registry_user" { |
| 139 | + count = var.create_external_storage_for_registry_backend ? 1 : 0 |
| 140 | + user = aws_iam_user.bucket_registry[count.index].name |
| 141 | +} |
0 commit comments