Skip to content
v2.276.0

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