Experimental
@aws-cdk/aws-imagebuilder-alpha is an experimental (alpha) package: its API may change in any release, without a major version bump.
LifecyclePolicyExclusionRules Struct
The rules to apply for excluding resources from the lifecycle policy rule.
Example
ts
const excludeAmisPolicy = new imagebuilder.LifecyclePolicy(this, 'ExcludeAmisPolicy', {
resourceType: imagebuilder.LifecyclePolicyResourceType.AMI_IMAGE,
details: [
{
action: { type: imagebuilder.LifecyclePolicyActionType.DELETE },
filter: { ageFilter: { age: Duration.days(30) } },
exclusionRules: {
amiExclusionRules: {
isPublic: true, // Exclude public AMIs
lastLaunched: Duration.days(7), // Exclude AMIs launched in last 7 days
regions: ['us-west-2', 'eu-west-1'], // Exclude AMIs in specific regions
sharedAccounts: ['123456789012'], // Exclude AMIs shared with specific accounts
tags: {
Protected: 'true',
Environment: 'production'
}
}
}
}
],
resourceSelection: {
tags: { Team: 'infrastructure' }
}
});
python
exclude_amis_policy = imagebuilder.LifecyclePolicy(self, "ExcludeAmisPolicy",
resource_type=imagebuilder.LifecyclePolicyResourceType.AMI_IMAGE,
details=[imagebuilder.LifecyclePolicyDetail(
action=imagebuilder.LifecyclePolicyAction(type=imagebuilder.LifecyclePolicyActionType.DELETE),
filter=imagebuilder.LifecyclePolicyFilter(age_filter=imagebuilder.LifecyclePolicyAgeFilter(age=Duration.days(30))),
exclusion_rules=imagebuilder.LifecyclePolicyExclusionRules(
ami_exclusion_rules=imagebuilder.LifecyclePolicyAmiExclusionRules(
is_public=True, # Exclude public AMIs
last_launched=Duration.days(7), # Exclude AMIs launched in last 7 days
regions=["us-west-2", "eu-west-1"], # Exclude AMIs in specific regions
shared_accounts=["123456789012"], # Exclude AMIs shared with specific accounts
tags={
"Protected": "true",
"Environment": "production"
}
)
)
)
],
resource_selection=imagebuilder.LifecyclePolicyResourceSelection(
tags={"Team": "infrastructure"}
)
)
java
LifecyclePolicy excludeAmisPolicy = LifecyclePolicy.Builder.create(this, "ExcludeAmisPolicy")
.resourceType(LifecyclePolicyResourceType.AMI_IMAGE)
.details(List.of(LifecyclePolicyDetail.builder()
.action(LifecyclePolicyAction.builder().type(LifecyclePolicyActionType.DELETE).build())
.filter(LifecyclePolicyFilter.builder().ageFilter(LifecyclePolicyAgeFilter.builder().age(Duration.days(30)).build()).build())
.exclusionRules(LifecyclePolicyExclusionRules.builder()
.amiExclusionRules(LifecyclePolicyAmiExclusionRules.builder()
.isPublic(true) // Exclude public AMIs
.lastLaunched(Duration.days(7)) // Exclude AMIs launched in last 7 days
.regions(List.of("us-west-2", "eu-west-1")) // Exclude AMIs in specific regions
.sharedAccounts(List.of("123456789012")) // Exclude AMIs shared with specific accounts
.tags(Map.of(
"Protected", "true",
"Environment", "production"))
.build())
.build())
.build()))
.resourceSelection(LifecyclePolicyResourceSelection.builder()
.tags(Map.of("Team", "infrastructure"))
.build())
.build();
csharp
// Install: dotnet add package Amazon.CDK.AWS.ImageBuilder.Alpha
var excludeAmisPolicy = new LifecyclePolicy(this, "ExcludeAmisPolicy", new LifecyclePolicyProps {
ResourceType = LifecyclePolicyResourceType.AMI_IMAGE,
Details = new [] { new LifecyclePolicyDetail {
Action = new LifecyclePolicyAction { Type = LifecyclePolicyActionType.DELETE },
Filter = new LifecyclePolicyFilter { AgeFilter = new LifecyclePolicyAgeFilter { Age = Duration.Days(30) } },
ExclusionRules = new LifecyclePolicyExclusionRules {
AmiExclusionRules = new LifecyclePolicyAmiExclusionRules {
IsPublic = true, // Exclude public AMIs
LastLaunched = Duration.Days(7), // Exclude AMIs launched in last 7 days
Regions = new [] { "us-west-2", "eu-west-1" }, // Exclude AMIs in specific regions
SharedAccounts = new [] { "123456789012" }, // Exclude AMIs shared with specific accounts
Tags = new Dictionary<string, string> {
{ "Protected", "true" },
{ "Environment", "production" }
}
}
}
} },
ResourceSelection = new LifecyclePolicyResourceSelection {
Tags = new Dictionary<string, string> { { "Team", "infrastructure" } }
}
});
go
// Install: go get github.com/aws/aws-cdk-go/awsimagebuilderalpha/v2
excludeAmisPolicy := imagebuilder.NewLifecyclePolicy(this, jsii.String("ExcludeAmisPolicy"), &LifecyclePolicyProps{
ResourceType: imagebuilder.LifecyclePolicyResourceType_AMI_IMAGE,
Details: []LifecyclePolicyDetail{
&LifecyclePolicyDetail{
Action: &LifecyclePolicyAction{
Type: imagebuilder.LifecyclePolicyActionType_DELETE,
},
Filter: &LifecyclePolicyFilter{
AgeFilter: &LifecyclePolicyAgeFilter{
Age: awscdk.Duration_Days(jsii.Number(30)),
},
},
ExclusionRules: &LifecyclePolicyExclusionRules{
AmiExclusionRules: &LifecyclePolicyAmiExclusionRules{
IsPublic: jsii.Boolean(true),
// Exclude public AMIs
LastLaunched: awscdk.Duration_*Days(jsii.Number(7)),
// Exclude AMIs launched in last 7 days
Regions: []*string{
jsii.String("us-west-2"),
jsii.String("eu-west-1"),
},
// Exclude AMIs in specific regions
SharedAccounts: []*string{
jsii.String("123456789012"),
},
// Exclude AMIs shared with specific accounts
Tags: map[string]*string{
"Protected": jsii.String("true"),
"Environment": jsii.String("production"),
},
},
},
},
},
ResourceSelection: &LifecyclePolicyResourceSelection{
Tags: map[string]*string{
"Team": jsii.String("infrastructure"),
},
},
})
Properties
amiExclusionRulesoptionalLifecyclePolicyAmiExclusionRulesami_exclusion_rulesoptionalLifecyclePolicyAmiExclusionRulesamiExclusionRulesoptionalLifecyclePolicyAmiExclusionRulesAmiExclusionRulesoptionalLifecyclePolicyAmiExclusionRulesAmiExclusionRulesoptionalLifecyclePolicyAmiExclusionRules#The rules to apply for excluding AMIs from the lifecycle policy rule.
Default: no exclusion rules are applied on the AMI
imageExclusionRulesoptionalLifecyclePolicyImageExclusionRulesimage_exclusion_rulesoptionalLifecyclePolicyImageExclusionRulesimageExclusionRulesoptionalLifecyclePolicyImageExclusionRulesImageExclusionRulesoptionalLifecyclePolicyImageExclusionRulesImageExclusionRulesoptionalLifecyclePolicyImageExclusionRules#The rules to apply for excluding EC2 Image Builder images from the lifecycle policy rule.
Default: no exclusion rules are applied on the image