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 }