github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/iam/userGroupMembership.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 // Provides a resource for adding an IAM User to IAM Groups. This 16 // resource can be used multiple times with the same user for non-overlapping 17 // groups. 18 // 19 // To exclusively manage the users in a group, see the 20 // `iam.GroupMembership` resource. 21 // 22 // ## Example Usage 23 // 24 // <!--Start PulumiCodeChooser --> 25 // ```go 26 // package main 27 // 28 // import ( 29 // 30 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 31 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 32 // 33 // ) 34 // 35 // func main() { 36 // pulumi.Run(func(ctx *pulumi.Context) error { 37 // user1, err := iam.NewUser(ctx, "user1", &iam.UserArgs{ 38 // Name: pulumi.String("user1"), 39 // }) 40 // if err != nil { 41 // return err 42 // } 43 // group1, err := iam.NewGroup(ctx, "group1", &iam.GroupArgs{ 44 // Name: pulumi.String("group1"), 45 // }) 46 // if err != nil { 47 // return err 48 // } 49 // group2, err := iam.NewGroup(ctx, "group2", &iam.GroupArgs{ 50 // Name: pulumi.String("group2"), 51 // }) 52 // if err != nil { 53 // return err 54 // } 55 // _, err = iam.NewUserGroupMembership(ctx, "example1", &iam.UserGroupMembershipArgs{ 56 // User: user1.Name, 57 // Groups: pulumi.StringArray{ 58 // group1.Name, 59 // group2.Name, 60 // }, 61 // }) 62 // if err != nil { 63 // return err 64 // } 65 // group3, err := iam.NewGroup(ctx, "group3", &iam.GroupArgs{ 66 // Name: pulumi.String("group3"), 67 // }) 68 // if err != nil { 69 // return err 70 // } 71 // _, err = iam.NewUserGroupMembership(ctx, "example2", &iam.UserGroupMembershipArgs{ 72 // User: user1.Name, 73 // Groups: pulumi.StringArray{ 74 // group3.Name, 75 // }, 76 // }) 77 // if err != nil { 78 // return err 79 // } 80 // return nil 81 // }) 82 // } 83 // 84 // ``` 85 // <!--End PulumiCodeChooser --> 86 // 87 // ## Import 88 // 89 // Using `pulumi import`, import IAM user group membership using the user name and group names separated by `/`. For example: 90 // 91 // ```sh 92 // $ pulumi import aws:iam/userGroupMembership:UserGroupMembership example1 user1/group1/group2 93 // ``` 94 type UserGroupMembership struct { 95 pulumi.CustomResourceState 96 97 // A list of IAM Groups to add the user to 98 Groups pulumi.StringArrayOutput `pulumi:"groups"` 99 // The name of the IAM User to add to groups 100 User pulumi.StringOutput `pulumi:"user"` 101 } 102 103 // NewUserGroupMembership registers a new resource with the given unique name, arguments, and options. 104 func NewUserGroupMembership(ctx *pulumi.Context, 105 name string, args *UserGroupMembershipArgs, opts ...pulumi.ResourceOption) (*UserGroupMembership, error) { 106 if args == nil { 107 return nil, errors.New("missing one or more required arguments") 108 } 109 110 if args.Groups == nil { 111 return nil, errors.New("invalid value for required argument 'Groups'") 112 } 113 if args.User == nil { 114 return nil, errors.New("invalid value for required argument 'User'") 115 } 116 opts = internal.PkgResourceDefaultOpts(opts) 117 var resource UserGroupMembership 118 err := ctx.RegisterResource("aws:iam/userGroupMembership:UserGroupMembership", name, args, &resource, opts...) 119 if err != nil { 120 return nil, err 121 } 122 return &resource, nil 123 } 124 125 // GetUserGroupMembership gets an existing UserGroupMembership resource's state with the given name, ID, and optional 126 // state properties that are used to uniquely qualify the lookup (nil if not required). 127 func GetUserGroupMembership(ctx *pulumi.Context, 128 name string, id pulumi.IDInput, state *UserGroupMembershipState, opts ...pulumi.ResourceOption) (*UserGroupMembership, error) { 129 var resource UserGroupMembership 130 err := ctx.ReadResource("aws:iam/userGroupMembership:UserGroupMembership", name, id, state, &resource, opts...) 131 if err != nil { 132 return nil, err 133 } 134 return &resource, nil 135 } 136 137 // Input properties used for looking up and filtering UserGroupMembership resources. 138 type userGroupMembershipState struct { 139 // A list of IAM Groups to add the user to 140 Groups []string `pulumi:"groups"` 141 // The name of the IAM User to add to groups 142 User *string `pulumi:"user"` 143 } 144 145 type UserGroupMembershipState struct { 146 // A list of IAM Groups to add the user to 147 Groups pulumi.StringArrayInput 148 // The name of the IAM User to add to groups 149 User pulumi.StringPtrInput 150 } 151 152 func (UserGroupMembershipState) ElementType() reflect.Type { 153 return reflect.TypeOf((*userGroupMembershipState)(nil)).Elem() 154 } 155 156 type userGroupMembershipArgs struct { 157 // A list of IAM Groups to add the user to 158 Groups []string `pulumi:"groups"` 159 // The name of the IAM User to add to groups 160 User string `pulumi:"user"` 161 } 162 163 // The set of arguments for constructing a UserGroupMembership resource. 164 type UserGroupMembershipArgs struct { 165 // A list of IAM Groups to add the user to 166 Groups pulumi.StringArrayInput 167 // The name of the IAM User to add to groups 168 User pulumi.StringInput 169 } 170 171 func (UserGroupMembershipArgs) ElementType() reflect.Type { 172 return reflect.TypeOf((*userGroupMembershipArgs)(nil)).Elem() 173 } 174 175 type UserGroupMembershipInput interface { 176 pulumi.Input 177 178 ToUserGroupMembershipOutput() UserGroupMembershipOutput 179 ToUserGroupMembershipOutputWithContext(ctx context.Context) UserGroupMembershipOutput 180 } 181 182 func (*UserGroupMembership) ElementType() reflect.Type { 183 return reflect.TypeOf((**UserGroupMembership)(nil)).Elem() 184 } 185 186 func (i *UserGroupMembership) ToUserGroupMembershipOutput() UserGroupMembershipOutput { 187 return i.ToUserGroupMembershipOutputWithContext(context.Background()) 188 } 189 190 func (i *UserGroupMembership) ToUserGroupMembershipOutputWithContext(ctx context.Context) UserGroupMembershipOutput { 191 return pulumi.ToOutputWithContext(ctx, i).(UserGroupMembershipOutput) 192 } 193 194 // UserGroupMembershipArrayInput is an input type that accepts UserGroupMembershipArray and UserGroupMembershipArrayOutput values. 195 // You can construct a concrete instance of `UserGroupMembershipArrayInput` via: 196 // 197 // UserGroupMembershipArray{ UserGroupMembershipArgs{...} } 198 type UserGroupMembershipArrayInput interface { 199 pulumi.Input 200 201 ToUserGroupMembershipArrayOutput() UserGroupMembershipArrayOutput 202 ToUserGroupMembershipArrayOutputWithContext(context.Context) UserGroupMembershipArrayOutput 203 } 204 205 type UserGroupMembershipArray []UserGroupMembershipInput 206 207 func (UserGroupMembershipArray) ElementType() reflect.Type { 208 return reflect.TypeOf((*[]*UserGroupMembership)(nil)).Elem() 209 } 210 211 func (i UserGroupMembershipArray) ToUserGroupMembershipArrayOutput() UserGroupMembershipArrayOutput { 212 return i.ToUserGroupMembershipArrayOutputWithContext(context.Background()) 213 } 214 215 func (i UserGroupMembershipArray) ToUserGroupMembershipArrayOutputWithContext(ctx context.Context) UserGroupMembershipArrayOutput { 216 return pulumi.ToOutputWithContext(ctx, i).(UserGroupMembershipArrayOutput) 217 } 218 219 // UserGroupMembershipMapInput is an input type that accepts UserGroupMembershipMap and UserGroupMembershipMapOutput values. 220 // You can construct a concrete instance of `UserGroupMembershipMapInput` via: 221 // 222 // UserGroupMembershipMap{ "key": UserGroupMembershipArgs{...} } 223 type UserGroupMembershipMapInput interface { 224 pulumi.Input 225 226 ToUserGroupMembershipMapOutput() UserGroupMembershipMapOutput 227 ToUserGroupMembershipMapOutputWithContext(context.Context) UserGroupMembershipMapOutput 228 } 229 230 type UserGroupMembershipMap map[string]UserGroupMembershipInput 231 232 func (UserGroupMembershipMap) ElementType() reflect.Type { 233 return reflect.TypeOf((*map[string]*UserGroupMembership)(nil)).Elem() 234 } 235 236 func (i UserGroupMembershipMap) ToUserGroupMembershipMapOutput() UserGroupMembershipMapOutput { 237 return i.ToUserGroupMembershipMapOutputWithContext(context.Background()) 238 } 239 240 func (i UserGroupMembershipMap) ToUserGroupMembershipMapOutputWithContext(ctx context.Context) UserGroupMembershipMapOutput { 241 return pulumi.ToOutputWithContext(ctx, i).(UserGroupMembershipMapOutput) 242 } 243 244 type UserGroupMembershipOutput struct{ *pulumi.OutputState } 245 246 func (UserGroupMembershipOutput) ElementType() reflect.Type { 247 return reflect.TypeOf((**UserGroupMembership)(nil)).Elem() 248 } 249 250 func (o UserGroupMembershipOutput) ToUserGroupMembershipOutput() UserGroupMembershipOutput { 251 return o 252 } 253 254 func (o UserGroupMembershipOutput) ToUserGroupMembershipOutputWithContext(ctx context.Context) UserGroupMembershipOutput { 255 return o 256 } 257 258 // A list of IAM Groups to add the user to 259 func (o UserGroupMembershipOutput) Groups() pulumi.StringArrayOutput { 260 return o.ApplyT(func(v *UserGroupMembership) pulumi.StringArrayOutput { return v.Groups }).(pulumi.StringArrayOutput) 261 } 262 263 // The name of the IAM User to add to groups 264 func (o UserGroupMembershipOutput) User() pulumi.StringOutput { 265 return o.ApplyT(func(v *UserGroupMembership) pulumi.StringOutput { return v.User }).(pulumi.StringOutput) 266 } 267 268 type UserGroupMembershipArrayOutput struct{ *pulumi.OutputState } 269 270 func (UserGroupMembershipArrayOutput) ElementType() reflect.Type { 271 return reflect.TypeOf((*[]*UserGroupMembership)(nil)).Elem() 272 } 273 274 func (o UserGroupMembershipArrayOutput) ToUserGroupMembershipArrayOutput() UserGroupMembershipArrayOutput { 275 return o 276 } 277 278 func (o UserGroupMembershipArrayOutput) ToUserGroupMembershipArrayOutputWithContext(ctx context.Context) UserGroupMembershipArrayOutput { 279 return o 280 } 281 282 func (o UserGroupMembershipArrayOutput) Index(i pulumi.IntInput) UserGroupMembershipOutput { 283 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *UserGroupMembership { 284 return vs[0].([]*UserGroupMembership)[vs[1].(int)] 285 }).(UserGroupMembershipOutput) 286 } 287 288 type UserGroupMembershipMapOutput struct{ *pulumi.OutputState } 289 290 func (UserGroupMembershipMapOutput) ElementType() reflect.Type { 291 return reflect.TypeOf((*map[string]*UserGroupMembership)(nil)).Elem() 292 } 293 294 func (o UserGroupMembershipMapOutput) ToUserGroupMembershipMapOutput() UserGroupMembershipMapOutput { 295 return o 296 } 297 298 func (o UserGroupMembershipMapOutput) ToUserGroupMembershipMapOutputWithContext(ctx context.Context) UserGroupMembershipMapOutput { 299 return o 300 } 301 302 func (o UserGroupMembershipMapOutput) MapIndex(k pulumi.StringInput) UserGroupMembershipOutput { 303 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *UserGroupMembership { 304 return vs[0].(map[string]*UserGroupMembership)[vs[1].(string)] 305 }).(UserGroupMembershipOutput) 306 } 307 308 func init() { 309 pulumi.RegisterInputType(reflect.TypeOf((*UserGroupMembershipInput)(nil)).Elem(), &UserGroupMembership{}) 310 pulumi.RegisterInputType(reflect.TypeOf((*UserGroupMembershipArrayInput)(nil)).Elem(), UserGroupMembershipArray{}) 311 pulumi.RegisterInputType(reflect.TypeOf((*UserGroupMembershipMapInput)(nil)).Elem(), UserGroupMembershipMap{}) 312 pulumi.RegisterOutputType(UserGroupMembershipOutput{}) 313 pulumi.RegisterOutputType(UserGroupMembershipArrayOutput{}) 314 pulumi.RegisterOutputType(UserGroupMembershipMapOutput{}) 315 }