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  }