github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/iam/groupMembership.go (about) 1 // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. 2 // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** 3 4 package iam 5 6 import ( 7 "context" 8 "reflect" 9 10 "errors" 11 "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" 12 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 13 ) 14 15 // > **WARNING:** Multiple iam.GroupMembership resources with the same group name will produce inconsistent behavior! 16 // 17 // Provides a top level resource to manage IAM Group membership for IAM Users. For 18 // more information on managing IAM Groups or IAM Users, see IAM Groups or 19 // IAM Users 20 // 21 // > **Note:** `iam.GroupMembership` will conflict with itself if used more than once with the same group. To non-exclusively manage the users in a group, see the 22 // `iam.UserGroupMembership` resource. 23 // 24 // ## Example Usage 25 // 26 // <!--Start PulumiCodeChooser --> 27 // ```go 28 // package main 29 // 30 // import ( 31 // 32 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 33 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 34 // 35 // ) 36 // 37 // func main() { 38 // pulumi.Run(func(ctx *pulumi.Context) error { 39 // group, err := iam.NewGroup(ctx, "group", &iam.GroupArgs{ 40 // Name: pulumi.String("test-group"), 41 // }) 42 // if err != nil { 43 // return err 44 // } 45 // userOne, err := iam.NewUser(ctx, "user_one", &iam.UserArgs{ 46 // Name: pulumi.String("test-user"), 47 // }) 48 // if err != nil { 49 // return err 50 // } 51 // userTwo, err := iam.NewUser(ctx, "user_two", &iam.UserArgs{ 52 // Name: pulumi.String("test-user-two"), 53 // }) 54 // if err != nil { 55 // return err 56 // } 57 // _, err = iam.NewGroupMembership(ctx, "team", &iam.GroupMembershipArgs{ 58 // Name: pulumi.String("tf-testing-group-membership"), 59 // Users: pulumi.StringArray{ 60 // userOne.Name, 61 // userTwo.Name, 62 // }, 63 // Group: group.Name, 64 // }) 65 // if err != nil { 66 // return err 67 // } 68 // return nil 69 // }) 70 // } 71 // 72 // ``` 73 // <!--End PulumiCodeChooser --> 74 type GroupMembership struct { 75 pulumi.CustomResourceState 76 77 // The IAM Group name to attach the list of `users` to 78 Group pulumi.StringOutput `pulumi:"group"` 79 // The name to identify the Group Membership 80 Name pulumi.StringOutput `pulumi:"name"` 81 // A list of IAM User names to associate with the Group 82 Users pulumi.StringArrayOutput `pulumi:"users"` 83 } 84 85 // NewGroupMembership registers a new resource with the given unique name, arguments, and options. 86 func NewGroupMembership(ctx *pulumi.Context, 87 name string, args *GroupMembershipArgs, opts ...pulumi.ResourceOption) (*GroupMembership, error) { 88 if args == nil { 89 return nil, errors.New("missing one or more required arguments") 90 } 91 92 if args.Group == nil { 93 return nil, errors.New("invalid value for required argument 'Group'") 94 } 95 if args.Users == nil { 96 return nil, errors.New("invalid value for required argument 'Users'") 97 } 98 opts = internal.PkgResourceDefaultOpts(opts) 99 var resource GroupMembership 100 err := ctx.RegisterResource("aws:iam/groupMembership:GroupMembership", name, args, &resource, opts...) 101 if err != nil { 102 return nil, err 103 } 104 return &resource, nil 105 } 106 107 // GetGroupMembership gets an existing GroupMembership resource's state with the given name, ID, and optional 108 // state properties that are used to uniquely qualify the lookup (nil if not required). 109 func GetGroupMembership(ctx *pulumi.Context, 110 name string, id pulumi.IDInput, state *GroupMembershipState, opts ...pulumi.ResourceOption) (*GroupMembership, error) { 111 var resource GroupMembership 112 err := ctx.ReadResource("aws:iam/groupMembership:GroupMembership", name, id, state, &resource, opts...) 113 if err != nil { 114 return nil, err 115 } 116 return &resource, nil 117 } 118 119 // Input properties used for looking up and filtering GroupMembership resources. 120 type groupMembershipState struct { 121 // The IAM Group name to attach the list of `users` to 122 Group *string `pulumi:"group"` 123 // The name to identify the Group Membership 124 Name *string `pulumi:"name"` 125 // A list of IAM User names to associate with the Group 126 Users []string `pulumi:"users"` 127 } 128 129 type GroupMembershipState struct { 130 // The IAM Group name to attach the list of `users` to 131 Group pulumi.StringPtrInput 132 // The name to identify the Group Membership 133 Name pulumi.StringPtrInput 134 // A list of IAM User names to associate with the Group 135 Users pulumi.StringArrayInput 136 } 137 138 func (GroupMembershipState) ElementType() reflect.Type { 139 return reflect.TypeOf((*groupMembershipState)(nil)).Elem() 140 } 141 142 type groupMembershipArgs struct { 143 // The IAM Group name to attach the list of `users` to 144 Group string `pulumi:"group"` 145 // The name to identify the Group Membership 146 Name *string `pulumi:"name"` 147 // A list of IAM User names to associate with the Group 148 Users []string `pulumi:"users"` 149 } 150 151 // The set of arguments for constructing a GroupMembership resource. 152 type GroupMembershipArgs struct { 153 // The IAM Group name to attach the list of `users` to 154 Group pulumi.StringInput 155 // The name to identify the Group Membership 156 Name pulumi.StringPtrInput 157 // A list of IAM User names to associate with the Group 158 Users pulumi.StringArrayInput 159 } 160 161 func (GroupMembershipArgs) ElementType() reflect.Type { 162 return reflect.TypeOf((*groupMembershipArgs)(nil)).Elem() 163 } 164 165 type GroupMembershipInput interface { 166 pulumi.Input 167 168 ToGroupMembershipOutput() GroupMembershipOutput 169 ToGroupMembershipOutputWithContext(ctx context.Context) GroupMembershipOutput 170 } 171 172 func (*GroupMembership) ElementType() reflect.Type { 173 return reflect.TypeOf((**GroupMembership)(nil)).Elem() 174 } 175 176 func (i *GroupMembership) ToGroupMembershipOutput() GroupMembershipOutput { 177 return i.ToGroupMembershipOutputWithContext(context.Background()) 178 } 179 180 func (i *GroupMembership) ToGroupMembershipOutputWithContext(ctx context.Context) GroupMembershipOutput { 181 return pulumi.ToOutputWithContext(ctx, i).(GroupMembershipOutput) 182 } 183 184 // GroupMembershipArrayInput is an input type that accepts GroupMembershipArray and GroupMembershipArrayOutput values. 185 // You can construct a concrete instance of `GroupMembershipArrayInput` via: 186 // 187 // GroupMembershipArray{ GroupMembershipArgs{...} } 188 type GroupMembershipArrayInput interface { 189 pulumi.Input 190 191 ToGroupMembershipArrayOutput() GroupMembershipArrayOutput 192 ToGroupMembershipArrayOutputWithContext(context.Context) GroupMembershipArrayOutput 193 } 194 195 type GroupMembershipArray []GroupMembershipInput 196 197 func (GroupMembershipArray) ElementType() reflect.Type { 198 return reflect.TypeOf((*[]*GroupMembership)(nil)).Elem() 199 } 200 201 func (i GroupMembershipArray) ToGroupMembershipArrayOutput() GroupMembershipArrayOutput { 202 return i.ToGroupMembershipArrayOutputWithContext(context.Background()) 203 } 204 205 func (i GroupMembershipArray) ToGroupMembershipArrayOutputWithContext(ctx context.Context) GroupMembershipArrayOutput { 206 return pulumi.ToOutputWithContext(ctx, i).(GroupMembershipArrayOutput) 207 } 208 209 // GroupMembershipMapInput is an input type that accepts GroupMembershipMap and GroupMembershipMapOutput values. 210 // You can construct a concrete instance of `GroupMembershipMapInput` via: 211 // 212 // GroupMembershipMap{ "key": GroupMembershipArgs{...} } 213 type GroupMembershipMapInput interface { 214 pulumi.Input 215 216 ToGroupMembershipMapOutput() GroupMembershipMapOutput 217 ToGroupMembershipMapOutputWithContext(context.Context) GroupMembershipMapOutput 218 } 219 220 type GroupMembershipMap map[string]GroupMembershipInput 221 222 func (GroupMembershipMap) ElementType() reflect.Type { 223 return reflect.TypeOf((*map[string]*GroupMembership)(nil)).Elem() 224 } 225 226 func (i GroupMembershipMap) ToGroupMembershipMapOutput() GroupMembershipMapOutput { 227 return i.ToGroupMembershipMapOutputWithContext(context.Background()) 228 } 229 230 func (i GroupMembershipMap) ToGroupMembershipMapOutputWithContext(ctx context.Context) GroupMembershipMapOutput { 231 return pulumi.ToOutputWithContext(ctx, i).(GroupMembershipMapOutput) 232 } 233 234 type GroupMembershipOutput struct{ *pulumi.OutputState } 235 236 func (GroupMembershipOutput) ElementType() reflect.Type { 237 return reflect.TypeOf((**GroupMembership)(nil)).Elem() 238 } 239 240 func (o GroupMembershipOutput) ToGroupMembershipOutput() GroupMembershipOutput { 241 return o 242 } 243 244 func (o GroupMembershipOutput) ToGroupMembershipOutputWithContext(ctx context.Context) GroupMembershipOutput { 245 return o 246 } 247 248 // The IAM Group name to attach the list of `users` to 249 func (o GroupMembershipOutput) Group() pulumi.StringOutput { 250 return o.ApplyT(func(v *GroupMembership) pulumi.StringOutput { return v.Group }).(pulumi.StringOutput) 251 } 252 253 // The name to identify the Group Membership 254 func (o GroupMembershipOutput) Name() pulumi.StringOutput { 255 return o.ApplyT(func(v *GroupMembership) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) 256 } 257 258 // A list of IAM User names to associate with the Group 259 func (o GroupMembershipOutput) Users() pulumi.StringArrayOutput { 260 return o.ApplyT(func(v *GroupMembership) pulumi.StringArrayOutput { return v.Users }).(pulumi.StringArrayOutput) 261 } 262 263 type GroupMembershipArrayOutput struct{ *pulumi.OutputState } 264 265 func (GroupMembershipArrayOutput) ElementType() reflect.Type { 266 return reflect.TypeOf((*[]*GroupMembership)(nil)).Elem() 267 } 268 269 func (o GroupMembershipArrayOutput) ToGroupMembershipArrayOutput() GroupMembershipArrayOutput { 270 return o 271 } 272 273 func (o GroupMembershipArrayOutput) ToGroupMembershipArrayOutputWithContext(ctx context.Context) GroupMembershipArrayOutput { 274 return o 275 } 276 277 func (o GroupMembershipArrayOutput) Index(i pulumi.IntInput) GroupMembershipOutput { 278 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *GroupMembership { 279 return vs[0].([]*GroupMembership)[vs[1].(int)] 280 }).(GroupMembershipOutput) 281 } 282 283 type GroupMembershipMapOutput struct{ *pulumi.OutputState } 284 285 func (GroupMembershipMapOutput) ElementType() reflect.Type { 286 return reflect.TypeOf((*map[string]*GroupMembership)(nil)).Elem() 287 } 288 289 func (o GroupMembershipMapOutput) ToGroupMembershipMapOutput() GroupMembershipMapOutput { 290 return o 291 } 292 293 func (o GroupMembershipMapOutput) ToGroupMembershipMapOutputWithContext(ctx context.Context) GroupMembershipMapOutput { 294 return o 295 } 296 297 func (o GroupMembershipMapOutput) MapIndex(k pulumi.StringInput) GroupMembershipOutput { 298 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *GroupMembership { 299 return vs[0].(map[string]*GroupMembership)[vs[1].(string)] 300 }).(GroupMembershipOutput) 301 } 302 303 func init() { 304 pulumi.RegisterInputType(reflect.TypeOf((*GroupMembershipInput)(nil)).Elem(), &GroupMembership{}) 305 pulumi.RegisterInputType(reflect.TypeOf((*GroupMembershipArrayInput)(nil)).Elem(), GroupMembershipArray{}) 306 pulumi.RegisterInputType(reflect.TypeOf((*GroupMembershipMapInput)(nil)).Elem(), GroupMembershipMap{}) 307 pulumi.RegisterOutputType(GroupMembershipOutput{}) 308 pulumi.RegisterOutputType(GroupMembershipArrayOutput{}) 309 pulumi.RegisterOutputType(GroupMembershipMapOutput{}) 310 }