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  }