github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/budgets/budgetAction.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 budgets
     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 budget action resource. Budget actions are cost savings controls that run either automatically on your behalf or by using a workflow approval process.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"fmt"
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    28  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/budgets"
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    30  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    31  //
    32  // )
    33  //
    34  //	func main() {
    35  //		pulumi.Run(func(ctx *pulumi.Context) error {
    36  //			example, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    37  //				Statements: []iam.GetPolicyDocumentStatement{
    38  //					{
    39  //						Effect: pulumi.StringRef("Allow"),
    40  //						Actions: []string{
    41  //							"ec2:Describe*",
    42  //						},
    43  //						Resources: []string{
    44  //							"*",
    45  //						},
    46  //					},
    47  //				},
    48  //			}, nil)
    49  //			if err != nil {
    50  //				return err
    51  //			}
    52  //			examplePolicy, err := iam.NewPolicy(ctx, "example", &iam.PolicyArgs{
    53  //				Name:        pulumi.String("example"),
    54  //				Description: pulumi.String("My example policy"),
    55  //				Policy:      pulumi.String(example.Json),
    56  //			})
    57  //			if err != nil {
    58  //				return err
    59  //			}
    60  //			current, err := aws.GetPartition(ctx, nil, nil)
    61  //			if err != nil {
    62  //				return err
    63  //			}
    64  //			assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    65  //				Statements: []iam.GetPolicyDocumentStatement{
    66  //					{
    67  //						Effect: pulumi.StringRef("Allow"),
    68  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    69  //							{
    70  //								Type: "Service",
    71  //								Identifiers: []string{
    72  //									fmt.Sprintf("budgets.%v", current.DnsSuffix),
    73  //								},
    74  //							},
    75  //						},
    76  //						Actions: []string{
    77  //							"sts:AssumeRole",
    78  //						},
    79  //					},
    80  //				},
    81  //			}, nil)
    82  //			if err != nil {
    83  //				return err
    84  //			}
    85  //			exampleRole, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
    86  //				Name:             pulumi.String("example"),
    87  //				AssumeRolePolicy: pulumi.String(assumeRole.Json),
    88  //			})
    89  //			if err != nil {
    90  //				return err
    91  //			}
    92  //			exampleBudget, err := budgets.NewBudget(ctx, "example", &budgets.BudgetArgs{
    93  //				Name:            pulumi.String("example"),
    94  //				BudgetType:      pulumi.String("USAGE"),
    95  //				LimitAmount:     pulumi.String("10.0"),
    96  //				LimitUnit:       pulumi.String("dollars"),
    97  //				TimePeriodStart: pulumi.String("2006-01-02_15:04"),
    98  //				TimeUnit:        pulumi.String("MONTHLY"),
    99  //			})
   100  //			if err != nil {
   101  //				return err
   102  //			}
   103  //			_, err = budgets.NewBudgetAction(ctx, "example", &budgets.BudgetActionArgs{
   104  //				BudgetName:       exampleBudget.Name,
   105  //				ActionType:       pulumi.String("APPLY_IAM_POLICY"),
   106  //				ApprovalModel:    pulumi.String("AUTOMATIC"),
   107  //				NotificationType: pulumi.String("ACTUAL"),
   108  //				ExecutionRoleArn: exampleRole.Arn,
   109  //				ActionThreshold: &budgets.BudgetActionActionThresholdArgs{
   110  //					ActionThresholdType:  pulumi.String("ABSOLUTE_VALUE"),
   111  //					ActionThresholdValue: pulumi.Float64(100),
   112  //				},
   113  //				Definition: &budgets.BudgetActionDefinitionArgs{
   114  //					IamActionDefinition: &budgets.BudgetActionDefinitionIamActionDefinitionArgs{
   115  //						PolicyArn: examplePolicy.Arn,
   116  //						Roles: pulumi.StringArray{
   117  //							exampleRole.Name,
   118  //						},
   119  //					},
   120  //				},
   121  //				Subscribers: budgets.BudgetActionSubscriberArray{
   122  //					&budgets.BudgetActionSubscriberArgs{
   123  //						Address:          pulumi.String("example@example.example"),
   124  //						SubscriptionType: pulumi.String("EMAIL"),
   125  //					},
   126  //				},
   127  //			})
   128  //			if err != nil {
   129  //				return err
   130  //			}
   131  //			return nil
   132  //		})
   133  //	}
   134  //
   135  // ```
   136  // <!--End PulumiCodeChooser -->
   137  //
   138  // ## Import
   139  //
   140  // Using `pulumi import`, import budget actions using `AccountID:ActionID:BudgetName`. For example:
   141  //
   142  // ```sh
   143  // $ pulumi import aws:budgets/budgetAction:BudgetAction myBudget 123456789012:some-id:myBudget
   144  // ```
   145  type BudgetAction struct {
   146  	pulumi.CustomResourceState
   147  
   148  	// The ID of the target account for budget. Will use current user's accountId by default if omitted.
   149  	AccountId pulumi.StringOutput `pulumi:"accountId"`
   150  	// The id of the budget action.
   151  	ActionId pulumi.StringOutput `pulumi:"actionId"`
   152  	// The trigger threshold of the action. See Action Threshold.
   153  	ActionThreshold BudgetActionActionThresholdOutput `pulumi:"actionThreshold"`
   154  	// The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_SCP_POLICY`, and `RUN_SSM_DOCUMENTS`.
   155  	ActionType pulumi.StringOutput `pulumi:"actionType"`
   156  	// This specifies if the action needs manual or automatic approval. Valid values are `AUTOMATIC` and `MANUAL`.
   157  	ApprovalModel pulumi.StringOutput `pulumi:"approvalModel"`
   158  	// The ARN of the budget action.
   159  	Arn pulumi.StringOutput `pulumi:"arn"`
   160  	// The name of a budget.
   161  	BudgetName pulumi.StringOutput `pulumi:"budgetName"`
   162  	// Specifies all of the type-specific parameters. See Definition.
   163  	Definition BudgetActionDefinitionOutput `pulumi:"definition"`
   164  	// The role passed for action execution and reversion. Roles and actions must be in the same account.
   165  	ExecutionRoleArn pulumi.StringOutput `pulumi:"executionRoleArn"`
   166  	// The type of a notification. Valid values are `ACTUAL` or `FORECASTED`.
   167  	NotificationType pulumi.StringOutput `pulumi:"notificationType"`
   168  	// The status of the budget action.
   169  	Status pulumi.StringOutput `pulumi:"status"`
   170  	// A list of subscribers. See Subscriber.
   171  	Subscribers BudgetActionSubscriberArrayOutput `pulumi:"subscribers"`
   172  }
   173  
   174  // NewBudgetAction registers a new resource with the given unique name, arguments, and options.
   175  func NewBudgetAction(ctx *pulumi.Context,
   176  	name string, args *BudgetActionArgs, opts ...pulumi.ResourceOption) (*BudgetAction, error) {
   177  	if args == nil {
   178  		return nil, errors.New("missing one or more required arguments")
   179  	}
   180  
   181  	if args.ActionThreshold == nil {
   182  		return nil, errors.New("invalid value for required argument 'ActionThreshold'")
   183  	}
   184  	if args.ActionType == nil {
   185  		return nil, errors.New("invalid value for required argument 'ActionType'")
   186  	}
   187  	if args.ApprovalModel == nil {
   188  		return nil, errors.New("invalid value for required argument 'ApprovalModel'")
   189  	}
   190  	if args.BudgetName == nil {
   191  		return nil, errors.New("invalid value for required argument 'BudgetName'")
   192  	}
   193  	if args.Definition == nil {
   194  		return nil, errors.New("invalid value for required argument 'Definition'")
   195  	}
   196  	if args.ExecutionRoleArn == nil {
   197  		return nil, errors.New("invalid value for required argument 'ExecutionRoleArn'")
   198  	}
   199  	if args.NotificationType == nil {
   200  		return nil, errors.New("invalid value for required argument 'NotificationType'")
   201  	}
   202  	if args.Subscribers == nil {
   203  		return nil, errors.New("invalid value for required argument 'Subscribers'")
   204  	}
   205  	opts = internal.PkgResourceDefaultOpts(opts)
   206  	var resource BudgetAction
   207  	err := ctx.RegisterResource("aws:budgets/budgetAction:BudgetAction", name, args, &resource, opts...)
   208  	if err != nil {
   209  		return nil, err
   210  	}
   211  	return &resource, nil
   212  }
   213  
   214  // GetBudgetAction gets an existing BudgetAction resource's state with the given name, ID, and optional
   215  // state properties that are used to uniquely qualify the lookup (nil if not required).
   216  func GetBudgetAction(ctx *pulumi.Context,
   217  	name string, id pulumi.IDInput, state *BudgetActionState, opts ...pulumi.ResourceOption) (*BudgetAction, error) {
   218  	var resource BudgetAction
   219  	err := ctx.ReadResource("aws:budgets/budgetAction:BudgetAction", name, id, state, &resource, opts...)
   220  	if err != nil {
   221  		return nil, err
   222  	}
   223  	return &resource, nil
   224  }
   225  
   226  // Input properties used for looking up and filtering BudgetAction resources.
   227  type budgetActionState struct {
   228  	// The ID of the target account for budget. Will use current user's accountId by default if omitted.
   229  	AccountId *string `pulumi:"accountId"`
   230  	// The id of the budget action.
   231  	ActionId *string `pulumi:"actionId"`
   232  	// The trigger threshold of the action. See Action Threshold.
   233  	ActionThreshold *BudgetActionActionThreshold `pulumi:"actionThreshold"`
   234  	// The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_SCP_POLICY`, and `RUN_SSM_DOCUMENTS`.
   235  	ActionType *string `pulumi:"actionType"`
   236  	// This specifies if the action needs manual or automatic approval. Valid values are `AUTOMATIC` and `MANUAL`.
   237  	ApprovalModel *string `pulumi:"approvalModel"`
   238  	// The ARN of the budget action.
   239  	Arn *string `pulumi:"arn"`
   240  	// The name of a budget.
   241  	BudgetName *string `pulumi:"budgetName"`
   242  	// Specifies all of the type-specific parameters. See Definition.
   243  	Definition *BudgetActionDefinition `pulumi:"definition"`
   244  	// The role passed for action execution and reversion. Roles and actions must be in the same account.
   245  	ExecutionRoleArn *string `pulumi:"executionRoleArn"`
   246  	// The type of a notification. Valid values are `ACTUAL` or `FORECASTED`.
   247  	NotificationType *string `pulumi:"notificationType"`
   248  	// The status of the budget action.
   249  	Status *string `pulumi:"status"`
   250  	// A list of subscribers. See Subscriber.
   251  	Subscribers []BudgetActionSubscriber `pulumi:"subscribers"`
   252  }
   253  
   254  type BudgetActionState struct {
   255  	// The ID of the target account for budget. Will use current user's accountId by default if omitted.
   256  	AccountId pulumi.StringPtrInput
   257  	// The id of the budget action.
   258  	ActionId pulumi.StringPtrInput
   259  	// The trigger threshold of the action. See Action Threshold.
   260  	ActionThreshold BudgetActionActionThresholdPtrInput
   261  	// The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_SCP_POLICY`, and `RUN_SSM_DOCUMENTS`.
   262  	ActionType pulumi.StringPtrInput
   263  	// This specifies if the action needs manual or automatic approval. Valid values are `AUTOMATIC` and `MANUAL`.
   264  	ApprovalModel pulumi.StringPtrInput
   265  	// The ARN of the budget action.
   266  	Arn pulumi.StringPtrInput
   267  	// The name of a budget.
   268  	BudgetName pulumi.StringPtrInput
   269  	// Specifies all of the type-specific parameters. See Definition.
   270  	Definition BudgetActionDefinitionPtrInput
   271  	// The role passed for action execution and reversion. Roles and actions must be in the same account.
   272  	ExecutionRoleArn pulumi.StringPtrInput
   273  	// The type of a notification. Valid values are `ACTUAL` or `FORECASTED`.
   274  	NotificationType pulumi.StringPtrInput
   275  	// The status of the budget action.
   276  	Status pulumi.StringPtrInput
   277  	// A list of subscribers. See Subscriber.
   278  	Subscribers BudgetActionSubscriberArrayInput
   279  }
   280  
   281  func (BudgetActionState) ElementType() reflect.Type {
   282  	return reflect.TypeOf((*budgetActionState)(nil)).Elem()
   283  }
   284  
   285  type budgetActionArgs struct {
   286  	// The ID of the target account for budget. Will use current user's accountId by default if omitted.
   287  	AccountId *string `pulumi:"accountId"`
   288  	// The trigger threshold of the action. See Action Threshold.
   289  	ActionThreshold BudgetActionActionThreshold `pulumi:"actionThreshold"`
   290  	// The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_SCP_POLICY`, and `RUN_SSM_DOCUMENTS`.
   291  	ActionType string `pulumi:"actionType"`
   292  	// This specifies if the action needs manual or automatic approval. Valid values are `AUTOMATIC` and `MANUAL`.
   293  	ApprovalModel string `pulumi:"approvalModel"`
   294  	// The name of a budget.
   295  	BudgetName string `pulumi:"budgetName"`
   296  	// Specifies all of the type-specific parameters. See Definition.
   297  	Definition BudgetActionDefinition `pulumi:"definition"`
   298  	// The role passed for action execution and reversion. Roles and actions must be in the same account.
   299  	ExecutionRoleArn string `pulumi:"executionRoleArn"`
   300  	// The type of a notification. Valid values are `ACTUAL` or `FORECASTED`.
   301  	NotificationType string `pulumi:"notificationType"`
   302  	// A list of subscribers. See Subscriber.
   303  	Subscribers []BudgetActionSubscriber `pulumi:"subscribers"`
   304  }
   305  
   306  // The set of arguments for constructing a BudgetAction resource.
   307  type BudgetActionArgs struct {
   308  	// The ID of the target account for budget. Will use current user's accountId by default if omitted.
   309  	AccountId pulumi.StringPtrInput
   310  	// The trigger threshold of the action. See Action Threshold.
   311  	ActionThreshold BudgetActionActionThresholdInput
   312  	// The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_SCP_POLICY`, and `RUN_SSM_DOCUMENTS`.
   313  	ActionType pulumi.StringInput
   314  	// This specifies if the action needs manual or automatic approval. Valid values are `AUTOMATIC` and `MANUAL`.
   315  	ApprovalModel pulumi.StringInput
   316  	// The name of a budget.
   317  	BudgetName pulumi.StringInput
   318  	// Specifies all of the type-specific parameters. See Definition.
   319  	Definition BudgetActionDefinitionInput
   320  	// The role passed for action execution and reversion. Roles and actions must be in the same account.
   321  	ExecutionRoleArn pulumi.StringInput
   322  	// The type of a notification. Valid values are `ACTUAL` or `FORECASTED`.
   323  	NotificationType pulumi.StringInput
   324  	// A list of subscribers. See Subscriber.
   325  	Subscribers BudgetActionSubscriberArrayInput
   326  }
   327  
   328  func (BudgetActionArgs) ElementType() reflect.Type {
   329  	return reflect.TypeOf((*budgetActionArgs)(nil)).Elem()
   330  }
   331  
   332  type BudgetActionInput interface {
   333  	pulumi.Input
   334  
   335  	ToBudgetActionOutput() BudgetActionOutput
   336  	ToBudgetActionOutputWithContext(ctx context.Context) BudgetActionOutput
   337  }
   338  
   339  func (*BudgetAction) ElementType() reflect.Type {
   340  	return reflect.TypeOf((**BudgetAction)(nil)).Elem()
   341  }
   342  
   343  func (i *BudgetAction) ToBudgetActionOutput() BudgetActionOutput {
   344  	return i.ToBudgetActionOutputWithContext(context.Background())
   345  }
   346  
   347  func (i *BudgetAction) ToBudgetActionOutputWithContext(ctx context.Context) BudgetActionOutput {
   348  	return pulumi.ToOutputWithContext(ctx, i).(BudgetActionOutput)
   349  }
   350  
   351  // BudgetActionArrayInput is an input type that accepts BudgetActionArray and BudgetActionArrayOutput values.
   352  // You can construct a concrete instance of `BudgetActionArrayInput` via:
   353  //
   354  //	BudgetActionArray{ BudgetActionArgs{...} }
   355  type BudgetActionArrayInput interface {
   356  	pulumi.Input
   357  
   358  	ToBudgetActionArrayOutput() BudgetActionArrayOutput
   359  	ToBudgetActionArrayOutputWithContext(context.Context) BudgetActionArrayOutput
   360  }
   361  
   362  type BudgetActionArray []BudgetActionInput
   363  
   364  func (BudgetActionArray) ElementType() reflect.Type {
   365  	return reflect.TypeOf((*[]*BudgetAction)(nil)).Elem()
   366  }
   367  
   368  func (i BudgetActionArray) ToBudgetActionArrayOutput() BudgetActionArrayOutput {
   369  	return i.ToBudgetActionArrayOutputWithContext(context.Background())
   370  }
   371  
   372  func (i BudgetActionArray) ToBudgetActionArrayOutputWithContext(ctx context.Context) BudgetActionArrayOutput {
   373  	return pulumi.ToOutputWithContext(ctx, i).(BudgetActionArrayOutput)
   374  }
   375  
   376  // BudgetActionMapInput is an input type that accepts BudgetActionMap and BudgetActionMapOutput values.
   377  // You can construct a concrete instance of `BudgetActionMapInput` via:
   378  //
   379  //	BudgetActionMap{ "key": BudgetActionArgs{...} }
   380  type BudgetActionMapInput interface {
   381  	pulumi.Input
   382  
   383  	ToBudgetActionMapOutput() BudgetActionMapOutput
   384  	ToBudgetActionMapOutputWithContext(context.Context) BudgetActionMapOutput
   385  }
   386  
   387  type BudgetActionMap map[string]BudgetActionInput
   388  
   389  func (BudgetActionMap) ElementType() reflect.Type {
   390  	return reflect.TypeOf((*map[string]*BudgetAction)(nil)).Elem()
   391  }
   392  
   393  func (i BudgetActionMap) ToBudgetActionMapOutput() BudgetActionMapOutput {
   394  	return i.ToBudgetActionMapOutputWithContext(context.Background())
   395  }
   396  
   397  func (i BudgetActionMap) ToBudgetActionMapOutputWithContext(ctx context.Context) BudgetActionMapOutput {
   398  	return pulumi.ToOutputWithContext(ctx, i).(BudgetActionMapOutput)
   399  }
   400  
   401  type BudgetActionOutput struct{ *pulumi.OutputState }
   402  
   403  func (BudgetActionOutput) ElementType() reflect.Type {
   404  	return reflect.TypeOf((**BudgetAction)(nil)).Elem()
   405  }
   406  
   407  func (o BudgetActionOutput) ToBudgetActionOutput() BudgetActionOutput {
   408  	return o
   409  }
   410  
   411  func (o BudgetActionOutput) ToBudgetActionOutputWithContext(ctx context.Context) BudgetActionOutput {
   412  	return o
   413  }
   414  
   415  // The ID of the target account for budget. Will use current user's accountId by default if omitted.
   416  func (o BudgetActionOutput) AccountId() pulumi.StringOutput {
   417  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.AccountId }).(pulumi.StringOutput)
   418  }
   419  
   420  // The id of the budget action.
   421  func (o BudgetActionOutput) ActionId() pulumi.StringOutput {
   422  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.ActionId }).(pulumi.StringOutput)
   423  }
   424  
   425  // The trigger threshold of the action. See Action Threshold.
   426  func (o BudgetActionOutput) ActionThreshold() BudgetActionActionThresholdOutput {
   427  	return o.ApplyT(func(v *BudgetAction) BudgetActionActionThresholdOutput { return v.ActionThreshold }).(BudgetActionActionThresholdOutput)
   428  }
   429  
   430  // The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. Valid values are `APPLY_IAM_POLICY`, `APPLY_SCP_POLICY`, and `RUN_SSM_DOCUMENTS`.
   431  func (o BudgetActionOutput) ActionType() pulumi.StringOutput {
   432  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.ActionType }).(pulumi.StringOutput)
   433  }
   434  
   435  // This specifies if the action needs manual or automatic approval. Valid values are `AUTOMATIC` and `MANUAL`.
   436  func (o BudgetActionOutput) ApprovalModel() pulumi.StringOutput {
   437  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.ApprovalModel }).(pulumi.StringOutput)
   438  }
   439  
   440  // The ARN of the budget action.
   441  func (o BudgetActionOutput) Arn() pulumi.StringOutput {
   442  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   443  }
   444  
   445  // The name of a budget.
   446  func (o BudgetActionOutput) BudgetName() pulumi.StringOutput {
   447  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.BudgetName }).(pulumi.StringOutput)
   448  }
   449  
   450  // Specifies all of the type-specific parameters. See Definition.
   451  func (o BudgetActionOutput) Definition() BudgetActionDefinitionOutput {
   452  	return o.ApplyT(func(v *BudgetAction) BudgetActionDefinitionOutput { return v.Definition }).(BudgetActionDefinitionOutput)
   453  }
   454  
   455  // The role passed for action execution and reversion. Roles and actions must be in the same account.
   456  func (o BudgetActionOutput) ExecutionRoleArn() pulumi.StringOutput {
   457  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.ExecutionRoleArn }).(pulumi.StringOutput)
   458  }
   459  
   460  // The type of a notification. Valid values are `ACTUAL` or `FORECASTED`.
   461  func (o BudgetActionOutput) NotificationType() pulumi.StringOutput {
   462  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.NotificationType }).(pulumi.StringOutput)
   463  }
   464  
   465  // The status of the budget action.
   466  func (o BudgetActionOutput) Status() pulumi.StringOutput {
   467  	return o.ApplyT(func(v *BudgetAction) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput)
   468  }
   469  
   470  // A list of subscribers. See Subscriber.
   471  func (o BudgetActionOutput) Subscribers() BudgetActionSubscriberArrayOutput {
   472  	return o.ApplyT(func(v *BudgetAction) BudgetActionSubscriberArrayOutput { return v.Subscribers }).(BudgetActionSubscriberArrayOutput)
   473  }
   474  
   475  type BudgetActionArrayOutput struct{ *pulumi.OutputState }
   476  
   477  func (BudgetActionArrayOutput) ElementType() reflect.Type {
   478  	return reflect.TypeOf((*[]*BudgetAction)(nil)).Elem()
   479  }
   480  
   481  func (o BudgetActionArrayOutput) ToBudgetActionArrayOutput() BudgetActionArrayOutput {
   482  	return o
   483  }
   484  
   485  func (o BudgetActionArrayOutput) ToBudgetActionArrayOutputWithContext(ctx context.Context) BudgetActionArrayOutput {
   486  	return o
   487  }
   488  
   489  func (o BudgetActionArrayOutput) Index(i pulumi.IntInput) BudgetActionOutput {
   490  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BudgetAction {
   491  		return vs[0].([]*BudgetAction)[vs[1].(int)]
   492  	}).(BudgetActionOutput)
   493  }
   494  
   495  type BudgetActionMapOutput struct{ *pulumi.OutputState }
   496  
   497  func (BudgetActionMapOutput) ElementType() reflect.Type {
   498  	return reflect.TypeOf((*map[string]*BudgetAction)(nil)).Elem()
   499  }
   500  
   501  func (o BudgetActionMapOutput) ToBudgetActionMapOutput() BudgetActionMapOutput {
   502  	return o
   503  }
   504  
   505  func (o BudgetActionMapOutput) ToBudgetActionMapOutputWithContext(ctx context.Context) BudgetActionMapOutput {
   506  	return o
   507  }
   508  
   509  func (o BudgetActionMapOutput) MapIndex(k pulumi.StringInput) BudgetActionOutput {
   510  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BudgetAction {
   511  		return vs[0].(map[string]*BudgetAction)[vs[1].(string)]
   512  	}).(BudgetActionOutput)
   513  }
   514  
   515  func init() {
   516  	pulumi.RegisterInputType(reflect.TypeOf((*BudgetActionInput)(nil)).Elem(), &BudgetAction{})
   517  	pulumi.RegisterInputType(reflect.TypeOf((*BudgetActionArrayInput)(nil)).Elem(), BudgetActionArray{})
   518  	pulumi.RegisterInputType(reflect.TypeOf((*BudgetActionMapInput)(nil)).Elem(), BudgetActionMap{})
   519  	pulumi.RegisterOutputType(BudgetActionOutput{})
   520  	pulumi.RegisterOutputType(BudgetActionArrayOutput{})
   521  	pulumi.RegisterOutputType(BudgetActionMapOutput{})
   522  }