createLifecyclePolicy

Creates a lifecycle policy resource.

Samples

// The following example creates a lifecycle policy that deletes AMI based images six months after they
// were created, selecting the images that match the specified resource tags.
val resp = imagebuilderClient.createLifecyclePolicy {
    name = "my-example-lifecycle-policy"
    executionRole = "arn:aws:iam::111122223333:role/my-example-lifecycle-role"
    resourceType = LifecyclePolicyResourceType.fromValue("AMI_IMAGE")
    policyDetails = listOf<LifecyclePolicyDetail>(
        LifecyclePolicyDetail {
            action = LifecyclePolicyDetailAction {
                type = LifecyclePolicyDetailActionType.fromValue("DELETE")
            }
            filter = LifecyclePolicyDetailFilter {
                type = LifecyclePolicyDetailFilterType.fromValue("AGE")
                value = 6
                unit = LifecyclePolicyTimeUnit.fromValue("MONTHS")
            }
        }            
    )
    resourceSelection = LifecyclePolicyResourceSelection {
        tagMap = mapOf<String, String>(
            "Environment" to "test"
        )
    }
    clientToken = "a1b2c3d4-5678-90ab-cdef-EXAMPLE13579"
}
// The following example creates a lifecycle policy that deletes images created from the specified
// recipe version after six months. The policy excludes images whose AMIs launched an instance within the
// last 30 days or are tagged to be retained.
val resp = imagebuilderClient.createLifecyclePolicy {
    name = "my-example-lifecycle-policy"
    executionRole = "arn:aws:iam::111122223333:role/my-example-lifecycle-role"
    resourceType = LifecyclePolicyResourceType.fromValue("AMI_IMAGE")
    policyDetails = listOf<LifecyclePolicyDetail>(
        LifecyclePolicyDetail {
            action = LifecyclePolicyDetailAction {
                type = LifecyclePolicyDetailActionType.fromValue("DELETE")
            }
            filter = LifecyclePolicyDetailFilter {
                type = LifecyclePolicyDetailFilterType.fromValue("AGE")
                value = 6
                unit = LifecyclePolicyTimeUnit.fromValue("MONTHS")
            }
            exclusionRules = LifecyclePolicyDetailExclusionRules {
                amis = LifecyclePolicyDetailExclusionRulesAmis {
                    lastLaunched = LifecyclePolicyDetailExclusionRulesAmisLastLaunched {
                        value = 30
                        unit = LifecyclePolicyTimeUnit.fromValue("DAYS")
                    }
                    tagMap = mapOf<String, String>(
                        "Retention" to "keep"
                    )
                }
            }
        }            
    )
    resourceSelection = LifecyclePolicyResourceSelection {
        recipes = listOf<LifecyclePolicyResourceSelectionRecipe>(
            LifecyclePolicyResourceSelectionRecipe {
                name = "my-example-recipe"
                semanticVersion = "1.0.0"
            }                
        )
    }
    clientToken = "a1b2c3d4-5678-90ab-cdef-EXAMPLE43210"
}