BudgetAction

class BudgetAction : KotlinCustomResource

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`

Properties

Link copied to clipboard
val accountId: Output<String>

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

Link copied to clipboard
val actionId: Output<String>

The id of the budget action.

Link copied to clipboard

The trigger threshold of the action. See Action Threshold.

Link copied to clipboard
val actionType: Output<String>

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>

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

Link copied to clipboard
val arn: Output<String>

The ARN of the budget action.

Link copied to clipboard
val budgetName: Output<String>

The name of a budget.

Link copied to clipboard

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

Link copied to clipboard

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

Link copied to clipboard
val id: Output<String>
Link copied to clipboard

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

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val status: Output<String>

The status of the budget action.

Link copied to clipboard

A list of subscribers. See Subscriber.

Link copied to clipboard
val urn: Output<String>