@@ -64,3 +64,49 @@ resource "aws_ssoadmin_customer_managed_policy_attachment" "this" {
64
64
path = coalesce (each. value . policy_path , " /" )
65
65
}
66
66
}
67
+
68
+ # Fetching SSO Instance
69
+ data "aws_ssoadmin_instances" "this" {}
70
+
71
+ # Create SSO Groups
72
+ resource "aws_identitystore_group" "this" {
73
+ for_each = { for group_name in var . groups : group_name => group_name }
74
+ display_name = each. value
75
+ identity_store_id = tolist (data. aws_ssoadmin_instances . this . identity_store_ids )[0 ]
76
+ }
77
+
78
+ # Create SSO Users
79
+ resource "aws_identitystore_user" "this" {
80
+ for_each = var. users
81
+ identity_store_id = tolist (data. aws_ssoadmin_instances . this . identity_store_ids )[0 ]
82
+ display_name = format (" %s %s" , each. value . first_name , each. value . last_name )
83
+ user_name = format (" %s%s" , substr (lower (each. value . first_name ), 0 , 1 ), lower (each. value . last_name ))
84
+
85
+ name {
86
+ given_name = each. value . first_name
87
+ family_name = each. value . last_name
88
+ }
89
+
90
+ emails {
91
+ value = join (" @" , [format (" %s.%s" , lower (each. value . first_name ), lower (each. value . last_name )), var . email_domain ])
92
+ }
93
+ }
94
+
95
+ # Assign Users to Groups
96
+ resource "aws_identitystore_group_membership" "this" {
97
+ for_each = var. users
98
+ identity_store_id = tolist (data. aws_ssoadmin_instances . this . identity_store_ids )[0 ]
99
+ group_id = aws_identitystore_group. this [each . value . groups ]. group_id
100
+ member_id = aws_identitystore_user. this [each . key ]. user_id
101
+ }
102
+
103
+ resource "aws_ssoadmin_account_assignment" "this" {
104
+ instance_arn = tolist (data. aws_ssoadmin_instances . example . arns )[0 ]
105
+ permission_set_arn = data. aws_ssoadmin_permission_set . example . arn
106
+
107
+ principal_id = data. aws_identitystore_group . this . group_id
108
+ principal_type = " GROUP"
109
+
110
+ target_id = " 123456789012"
111
+ target_type = " AWS_ACCOUNT"
112
+ }
0 commit comments