generated from cloudposse/terraform-example-module
-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmain.tf
92 lines (74 loc) · 2.44 KB
/
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
locals {
enabled = module.this.enabled
}
resource "aws_lakeformation_resource" "default" {
count = local.enabled ? 1 : 0
arn = var.s3_bucket_arn
role_arn = var.role_arn
}
resource "aws_lakeformation_data_lake_settings" "default" {
count = local.enabled ? 1 : 0
catalog_id = var.catalog_id
admins = var.admin_arn_list
trusted_resource_owners = var.trusted_resource_owners
dynamic "create_database_default_permissions" {
for_each = var.database_default_permissions
content {
permissions = create_database_default_permissions.value.permissions
principal = create_database_default_permissions.value.principal
}
}
dynamic "create_table_default_permissions" {
for_each = var.table_default_permissions
content {
permissions = create_table_default_permissions.value.permissions
principal = create_table_default_permissions.value.principal
}
}
}
resource "aws_lakeformation_lf_tag" "default" {
for_each = local.enabled ? var.lf_tags : {}
catalog_id = var.catalog_id
key = each.key
values = each.value
depends_on = [aws_lakeformation_data_lake_settings.default]
}
resource "aws_lakeformation_resource_lf_tags" "default" {
for_each = local.enabled ? var.resources : {}
catalog_id = var.catalog_id
dynamic "database" {
for_each = (each.key == "database") ? ["true"] : []
content {
name = each.value.name
catalog_id = try(each.value.catalog_id, null)
}
}
dynamic "table" {
for_each = (each.key == "table") ? ["true"] : []
content {
database_name = each.value.database_name
name = each.value.name
wildcard = try(each.value.wildcard, null)
catalog_id = try(each.value.catalog_id, null)
}
}
dynamic "table_with_columns" {
for_each = (each.key == "table_with_columns") ? ["true"] : []
content {
database_name = each.value.database_name
name = each.value.name
wildcard = try(each.value.wildcard, null)
column_names = try(each.value.column_names, null)
catalog_id = try(each.value.catalog_id, null)
excluded_column_names = try(each.value.excluded_column_names, null)
}
}
dynamic "lf_tag" {
for_each = each.value.tags
content {
key = aws_lakeformation_lf_tag.default[lf_tag.key].key
value = lf_tag.value
}
}
depends_on = [aws_lakeformation_data_lake_settings.default]
}