Package com.pulumi.aws.dlm
Class LifecyclePolicy
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.dlm.LifecyclePolicy
-
public class LifecyclePolicy extends com.pulumi.resources.CustomResourceProvides a [Data Lifecycle Manager (DLM) lifecycle policy](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshot-lifecycle.html) for managing snapshots. ## Example Usage ### Basic
### Example Default Policypackage 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.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.iam.RolePolicy; import com.pulumi.aws.iam.RolePolicyArgs; import com.pulumi.aws.dlm.LifecyclePolicy; import com.pulumi.aws.dlm.LifecyclePolicyArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs; import java.util.ArrayList; import java.util.Arrays; 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 assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("dlm.amazonaws.com") .build()) .effect("Allow") .actions("sts:AssumeRole") .build()) .build()); var dlmLifecycleRole = new Role("dlmLifecycleRole", RoleArgs.builder() .name("dlm-lifecycle-role") .assumeRolePolicy(assumeRole.json()) .build()); final var dlmLifecycle = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements( GetPolicyDocumentStatementArgs.builder() .effect("Allow") .actions( "ec2:CreateSnapshot", "ec2:CreateSnapshots", "ec2:DeleteSnapshot", "ec2:DescribeInstances", "ec2:DescribeVolumes", "ec2:DescribeSnapshots") .resources("*") .build(), GetPolicyDocumentStatementArgs.builder() .effect("Allow") .actions("ec2:CreateTags") .resources("arn:aws:ec2:*::snapshot/*") .build()) .build()); var dlmLifecycleRolePolicy = new RolePolicy("dlmLifecycleRolePolicy", RolePolicyArgs.builder() .name("dlm-lifecycle-policy") .role(dlmLifecycleRole.id()) .policy(dlmLifecycle.json()) .build()); var example = new LifecyclePolicy("example", LifecyclePolicyArgs.builder() .policyDetails(LifecyclePolicyPolicyDetailsArgs.builder() .schedules(LifecyclePolicyPolicyDetailsScheduleArgs.builder() .createRule(LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs.builder() .interval(24) .intervalUnit("HOURS") .times("23:45") .build()) .retainRule(LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs.builder() .count(14) .build()) .name("2 weeks of daily snapshots") .tagsToAdd(Map.of("SnapshotCreator", "DLM")) .copyTags(false) .build()) .resourceTypes("VOLUME") .targetTags(Map.of("Snapshot", "true")) .build()) .description("example DLM lifecycle policy") .executionRoleArn(dlmLifecycleRole.arn()) .state("ENABLED") .build()); } }
### Example Cross-Region Snapshot Copy Usagepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.dlm.LifecyclePolicy; import com.pulumi.aws.dlm.LifecyclePolicyArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsExclusionsArgs; import java.util.ArrayList; import java.util.Arrays; 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) { var example = new LifecyclePolicy("example", LifecyclePolicyArgs.builder() .policyDetails(LifecyclePolicyPolicyDetailsArgs.builder() .exclusions(LifecyclePolicyPolicyDetailsExclusionsArgs.builder() .excludeBootVolumes(false) .excludeTags(Map.of("test", "exclude")) .excludeVolumeTypes("gp2") .build()) .createInterval(5) .resourceType("VOLUME") .policyLanguage("SIMPLIFIED") .build()) .description("tf-acc-basic") .executionRoleArn(exampleAwsIamRole.arn()) .defaultPolicy("VOLUME") .build()); } }
### Example Event Based Policy Usagepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetCallerIdentityArgs; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.kms.Key; import com.pulumi.aws.kms.KeyArgs; import com.pulumi.aws.dlm.LifecyclePolicy; import com.pulumi.aws.dlm.LifecyclePolicyArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleCrossRegionCopyRuleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleCrossRegionCopyRuleRetainRuleArgs; import java.util.ArrayList; import java.util.Arrays; 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) { // ...other configuration... final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder() .build()); final var key = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("AWS") .identifiers(String.format("arn:aws:iam::%s:root", current.accountId())) .build()) .sid("Enable IAM User Permissions") .effect("Allow") .actions("kms:*") .resources("*") .build()) .build()); var dlmCrossRegionCopyCmk = new Key("dlmCrossRegionCopyCmk", KeyArgs.builder() .description("Example Alternate Region KMS Key") .policy(key.json()) .build()); var example = new LifecyclePolicy("example", LifecyclePolicyArgs.builder() .policyDetails(LifecyclePolicyPolicyDetailsArgs.builder() .schedules(LifecyclePolicyPolicyDetailsScheduleArgs.builder() .createRule(LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs.builder() .interval(24) .intervalUnit("HOURS") .times("23:45") .build()) .retainRule(LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs.builder() .count(14) .build()) .crossRegionCopyRules(LifecyclePolicyPolicyDetailsScheduleCrossRegionCopyRuleArgs.builder() .retainRule(LifecyclePolicyPolicyDetailsScheduleCrossRegionCopyRuleRetainRuleArgs.builder() .interval(30) .intervalUnit("DAYS") .build()) .target("us-west-2") .encrypted(true) .cmkArn(dlmCrossRegionCopyCmk.arn()) .copyTags(true) .build()) .name("2 weeks of daily snapshots") .tagsToAdd(Map.of("SnapshotCreator", "DLM")) .copyTags(false) .build()) .resourceTypes("VOLUME") .targetTags(Map.of("Snapshot", "true")) .build()) .description("example DLM lifecycle policy") .executionRoleArn(dlmLifecycleRole.arn()) .state("ENABLED") .build()); } }
### Example Post/Pre Scriptspackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetCallerIdentityArgs; import com.pulumi.aws.dlm.LifecyclePolicy; import com.pulumi.aws.dlm.LifecyclePolicyArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsActionArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsActionCrossRegionCopyArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsActionCrossRegionCopyEncryptionConfigurationArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsActionCrossRegionCopyRetainRuleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsEventSourceArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsEventSourceParametersArgs; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyArgs; import com.pulumi.aws.iam.RolePolicyAttachment; import com.pulumi.aws.iam.RolePolicyAttachmentArgs; import java.util.ArrayList; import java.util.Arrays; 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 current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder() .build()); var exampleLifecyclePolicy = new LifecyclePolicy("exampleLifecyclePolicy", LifecyclePolicyArgs.builder() .policyDetails(LifecyclePolicyPolicyDetailsArgs.builder() .action(LifecyclePolicyPolicyDetailsActionArgs.builder() .crossRegionCopies(LifecyclePolicyPolicyDetailsActionCrossRegionCopyArgs.builder() .encryptionConfiguration(LifecyclePolicyPolicyDetailsActionCrossRegionCopyEncryptionConfigurationArgs.builder() .build()) .retainRule(LifecyclePolicyPolicyDetailsActionCrossRegionCopyRetainRuleArgs.builder() .interval(15) .intervalUnit("MONTHS") .build()) .target("us-east-1") .build()) .name("tf-acc-basic") .build()) .eventSource(LifecyclePolicyPolicyDetailsEventSourceArgs.builder() .parameters(LifecyclePolicyPolicyDetailsEventSourceParametersArgs.builder() .descriptionRegex("^.*Created for policy: policy-1234567890abcdef0.*$") .eventType("shareSnapshot") .snapshotOwners(current.accountId()) .build()) .type("MANAGED_CWE") .build()) .policyType("EVENT_BASED_POLICY") .build()) .description("tf-acc-basic") .executionRoleArn(exampleAwsIamRole.arn()) .build()); final var example = IamFunctions.getPolicy(GetPolicyArgs.builder() .name("AWSDataLifecycleManagerServiceRole") .build()); var exampleRolePolicyAttachment = new RolePolicyAttachment("exampleRolePolicyAttachment", RolePolicyAttachmentArgs.builder() .role(exampleAwsIamRole.id()) .policyArn(example.arn()) .build()); } }
## Import Using `pulumi import`, import DLM lifecycle policies using their policy ID. For example: ```sh $ pulumi import aws:dlm/lifecyclePolicy:LifecyclePolicy example policy-abcdef12345678901 ```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.GetPolicyArgs; import com.pulumi.aws.iam.RolePolicyAttachment; import com.pulumi.aws.iam.RolePolicyAttachmentArgs; import com.pulumi.aws.dlm.LifecyclePolicy; import com.pulumi.aws.dlm.LifecyclePolicyArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleCreateRuleScriptsArgs; import com.pulumi.aws.dlm.inputs.LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs; import java.util.ArrayList; import java.util.Arrays; 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 test = IamFunctions.getPolicy(GetPolicyArgs.builder() .name("AWSDataLifecycleManagerSSMFullAccess") .build()); var example = new RolePolicyAttachment("example", RolePolicyAttachmentArgs.builder() .role(testAwsIamRole.id()) .policyArn(exampleAwsIamPolicy.arn()) .build()); var exampleLifecyclePolicy = new LifecyclePolicy("exampleLifecyclePolicy", LifecyclePolicyArgs.builder() .policyDetails(LifecyclePolicyPolicyDetailsArgs.builder() .schedules(LifecyclePolicyPolicyDetailsScheduleArgs.builder() .createRule(LifecyclePolicyPolicyDetailsScheduleCreateRuleArgs.builder() .scripts(LifecyclePolicyPolicyDetailsScheduleCreateRuleScriptsArgs.builder() .executeOperationOnScriptFailure(false) .executionHandler("AWS_VSS_BACKUP") .maximumRetryCount(2) .build()) .interval(12) .build()) .retainRule(LifecyclePolicyPolicyDetailsScheduleRetainRuleArgs.builder() .count(10) .build()) .name("Windows VSS") .build()) .resourceTypes("INSTANCE") .targetTags(Map.of("tag1", "Windows")) .build()) .description("tf-acc-basic") .executionRoleArn(exampleAwsIamRole.arn()) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description LifecyclePolicy(java.lang.String name)LifecyclePolicy(java.lang.String name, LifecyclePolicyArgs args)LifecyclePolicy(java.lang.String name, LifecyclePolicyArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.util.Optional<java.lang.String>>defaultPolicy()com.pulumi.core.Output<java.lang.String>description()com.pulumi.core.Output<java.lang.String>executionRoleArn()static LifecyclePolicyget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, LifecyclePolicyState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<LifecyclePolicyPolicyDetails>policyDetails()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.Optional<java.lang.String>>state()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()
-
-
-
Constructor Detail
-
LifecyclePolicy
public LifecyclePolicy(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
LifecyclePolicy
public LifecyclePolicy(java.lang.String name, LifecyclePolicyArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
LifecyclePolicy
public LifecyclePolicy(java.lang.String name, LifecyclePolicyArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the DLM Lifecycle Policy.
-
defaultPolicy
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> defaultPolicy()
- Returns:
- Specify the type of default policy to create. valid values are `VOLUME` or `INSTANCE`.
-
description
public com.pulumi.core.Output<java.lang.String> description()
- Returns:
- A description for the DLM lifecycle policy.
-
executionRoleArn
public com.pulumi.core.Output<java.lang.String> executionRoleArn()
- Returns:
- The ARN of an IAM role that is able to be assumed by the DLM service.
-
policyDetails
public com.pulumi.core.Output<LifecyclePolicyPolicyDetails> policyDetails()
- Returns:
- See the `policyDetails` configuration block. Max of 1.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
state
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> state()
- Returns:
- Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are valid values. Defaults to `ENABLED`.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
get
public static LifecyclePolicy get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable LifecyclePolicyState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-