BudgetActionArgs

data class BudgetActionArgs(val accountId: Output<String>? = null, val actionThreshold: Output<BudgetActionActionThresholdArgs>? = null, val actionType: Output<String>? = null, val approvalModel: Output<String>? = null, val budgetName: Output<String>? = null, val definition: Output<BudgetActionDefinitionArgs>? = null, val executionRoleArn: Output<String>? = null, val notificationType: Output<String>? = null, val subscribers: Output<List<BudgetActionSubscriberArgs>>? = null) : ConvertibleToJava<BudgetActionArgs>

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.

Example Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.iam.IamFunctions;
import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
import com.pulumi.aws.iam.Policy;
import com.pulumi.aws.iam.PolicyArgs;
import com.pulumi.aws.AwsFunctions;
import com.pulumi.aws.iam.Role;
import com.pulumi.aws.iam.RoleArgs;
import com.pulumi.aws.budgets.Budget;
import com.pulumi.aws.budgets.BudgetArgs;
import com.pulumi.aws.budgets.BudgetAction;
import com.pulumi.aws.budgets.BudgetActionArgs;
import com.pulumi.aws.budgets.inputs.BudgetActionActionThresholdArgs;
import com.pulumi.aws.budgets.inputs.BudgetActionDefinitionArgs;
import com.pulumi.aws.budgets.inputs.BudgetActionDefinitionIamActionDefinitionArgs;
import com.pulumi.aws.budgets.inputs.BudgetActionSubscriberArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var examplePolicyDocument = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
.statements(GetPolicyDocumentStatementArgs.builder()
.effect("Allow")
.actions("ec2:Describe*")
.resources("*")
.build())
.build());
var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
.description("My example policy")
.policy(examplePolicyDocument.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json()))
.build());
final var current = AwsFunctions.getPartition();
final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
.statements(GetPolicyDocumentStatementArgs.builder()
.effect("Allow")
.principals(GetPolicyDocumentStatementPrincipalArgs.builder()
.type("Service")
.identifiers(String.format("budgets.%s", current.applyValue(getPartitionResult -> getPartitionResult.dnsSuffix())))
.build())
.actions("sts:AssumeRole")
.build())
.build());
var exampleRole = new Role("exampleRole", RoleArgs.builder()
.assumeRolePolicy(assumeRole.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json()))
.build());
var exampleBudget = new Budget("exampleBudget", BudgetArgs.builder()
.budgetType("USAGE")
.limitAmount("10.0")
.limitUnit("dollars")
.timePeriodStart("2006-01-02_15:04")
.timeUnit("MONTHLY")
.build());
var exampleBudgetAction = new BudgetAction("exampleBudgetAction", BudgetActionArgs.builder()
.budgetName(exampleBudget.name())
.actionType("APPLY_IAM_POLICY")
.approvalModel("AUTOMATIC")
.notificationType("ACTUAL")
.executionRoleArn(exampleRole.arn())
.actionThreshold(BudgetActionActionThresholdArgs.builder()
.actionThresholdType("ABSOLUTE_VALUE")
.actionThresholdValue(100)
.build())
.definition(BudgetActionDefinitionArgs.builder()
.iamActionDefinition(BudgetActionDefinitionIamActionDefinitionArgs.builder()
.policyArn(examplePolicy.arn())
.roles(exampleRole.name())
.build())
.build())
.subscribers(BudgetActionSubscriberArgs.builder()
.address("example@example.example")
.subscriptionType("EMAIL")
.build())
.build());
}
}

Import

Budgets can be imported using AccountID:ActionID:BudgetName, e.g.,

$ pulumi import aws:budgets/budgetAction:BudgetAction myBudget 123456789012:some-id:myBudget`

Constructors

Link copied to clipboard
constructor(accountId: Output<String>? = null, actionThreshold: Output<BudgetActionActionThresholdArgs>? = null, actionType: Output<String>? = null, approvalModel: Output<String>? = null, budgetName: Output<String>? = null, definition: Output<BudgetActionDefinitionArgs>? = null, executionRoleArn: Output<String>? = null, notificationType: Output<String>? = null, subscribers: Output<List<BudgetActionSubscriberArgs>>? = null)

Properties

Link copied to clipboard
val accountId: Output<String>? = null

The ID of the target account for budget. Will use current user's account_id by default if omitted.

Link copied to clipboard

The trigger threshold of the action. See Action Threshold.

Link copied to clipboard
val actionType: Output<String>? = null

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.

Link copied to clipboard
val approvalModel: Output<String>? = null

This specifies if the action needs manual or automatic approval. Valid values are AUTOMATIC and MANUAL.

Link copied to clipboard
val budgetName: Output<String>? = null

The name of a budget.

Link copied to clipboard

Specifies all of the type-specific parameters. See Definition.

Link copied to clipboard
val executionRoleArn: Output<String>? = null

The role passed for action execution and reversion. Roles and actions must be in the same account.

Link copied to clipboard
val notificationType: Output<String>? = null

The type of a notification. Valid values are ACTUAL or FORECASTED.

Link copied to clipboard

A list of subscribers. See Subscriber.

Functions

Link copied to clipboard
open override fun toJava(): BudgetActionArgs