# Copyright (c) 2012-2024, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***
from . import AWSObject, AWSProperty, PropsDictType
from .validators import boolean, integer
from .validators.imagebuilder import (
component_platforms,
ebsinstanceblockdevicespecification_volume_type,
imagepipeline_status,
schedule_pipelineexecutionstartcondition,
)
[docs]class Component(AWSObject):
"""
`Component <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-component.html>`__
"""
resource_type = "AWS::ImageBuilder::Component"
props: PropsDictType = {
"ChangeDescription": (str, False),
"Data": (str, False),
"Description": (str, False),
"KmsKeyId": (str, False),
"Name": (str, True),
"Platform": (component_platforms, True),
"SupportedOsVersions": ([str], False),
"Tags": (dict, False),
"Uri": (str, False),
"Version": (str, True),
}
[docs]class ComponentParameter(AWSProperty):
"""
`ComponentParameter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-componentparameter.html>`__
"""
props: PropsDictType = {
"Name": (str, True),
"Value": ([str], True),
}
[docs]class ContainerComponentConfiguration(AWSProperty):
"""
`ContainerComponentConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-containerrecipe-componentconfiguration.html>`__
"""
props: PropsDictType = {
"ComponentArn": (str, False),
"Parameters": ([ComponentParameter], False),
}
[docs]class EbsInstanceBlockDeviceSpecification(AWSProperty):
"""
`EbsInstanceBlockDeviceSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html>`__
"""
props: PropsDictType = {
"DeleteOnTermination": (boolean, False),
"Encrypted": (boolean, False),
"Iops": (integer, False),
"KmsKeyId": (str, False),
"SnapshotId": (str, False),
"Throughput": (integer, False),
"VolumeSize": (integer, False),
"VolumeType": (ebsinstanceblockdevicespecification_volume_type, False),
}
[docs]class InstanceBlockDeviceMapping(AWSProperty):
"""
`InstanceBlockDeviceMapping <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html>`__
"""
props: PropsDictType = {
"DeviceName": (str, False),
"Ebs": (EbsInstanceBlockDeviceSpecification, False),
"NoDevice": (str, False),
"VirtualName": (str, False),
}
[docs]class InstanceConfiguration(AWSProperty):
"""
`InstanceConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-containerrecipe-instanceconfiguration.html>`__
"""
props: PropsDictType = {
"BlockDeviceMappings": ([InstanceBlockDeviceMapping], False),
"Image": (str, False),
}
[docs]class TargetContainerRepository(AWSProperty):
"""
`TargetContainerRepository <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-targetcontainerrepository.html>`__
"""
props: PropsDictType = {
"RepositoryName": (str, False),
"Service": (str, False),
}
[docs]class ContainerRecipe(AWSObject):
"""
`ContainerRecipe <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-containerrecipe.html>`__
"""
resource_type = "AWS::ImageBuilder::ContainerRecipe"
props: PropsDictType = {
"Components": ([ContainerComponentConfiguration], True),
"ContainerType": (str, True),
"Description": (str, False),
"DockerfileTemplateData": (str, False),
"DockerfileTemplateUri": (str, False),
"ImageOsVersionOverride": (str, False),
"InstanceConfiguration": (InstanceConfiguration, False),
"KmsKeyId": (str, False),
"Name": (str, True),
"ParentImage": (str, True),
"PlatformOverride": (str, False),
"Tags": (dict, False),
"TargetRepository": (TargetContainerRepository, True),
"Version": (str, True),
"WorkingDirectory": (str, False),
}
[docs]class LaunchPermissionConfiguration(AWSProperty):
"""
`LaunchPermissionConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-launchpermissionconfiguration.html>`__
"""
props: PropsDictType = {
"OrganizationArns": ([str], False),
"OrganizationalUnitArns": ([str], False),
"UserGroups": ([str], False),
"UserIds": ([str], False),
}
[docs]class AmiDistributionConfiguration(AWSProperty):
"""
`AmiDistributionConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-amidistributionconfiguration.html>`__
"""
props: PropsDictType = {
"AmiTags": (dict, False),
"Description": (str, False),
"KmsKeyId": (str, False),
"LaunchPermissionConfiguration": (LaunchPermissionConfiguration, False),
"Name": (str, False),
"TargetAccountIds": ([str], False),
}
[docs]class ContainerDistributionConfiguration(AWSProperty):
"""
`ContainerDistributionConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-containerdistributionconfiguration.html>`__
"""
props: PropsDictType = {
"ContainerTags": ([str], False),
"Description": (str, False),
"TargetRepository": (TargetContainerRepository, False),
}
[docs]class FastLaunchLaunchTemplateSpecification(AWSProperty):
"""
`FastLaunchLaunchTemplateSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-fastlaunchlaunchtemplatespecification.html>`__
"""
props: PropsDictType = {
"LaunchTemplateId": (str, False),
"LaunchTemplateName": (str, False),
"LaunchTemplateVersion": (str, False),
}
[docs]class FastLaunchSnapshotConfiguration(AWSProperty):
"""
`FastLaunchSnapshotConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-fastlaunchsnapshotconfiguration.html>`__
"""
props: PropsDictType = {
"TargetResourceCount": (integer, False),
}
[docs]class FastLaunchConfiguration(AWSProperty):
"""
`FastLaunchConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-fastlaunchconfiguration.html>`__
"""
props: PropsDictType = {
"AccountId": (str, False),
"Enabled": (boolean, False),
"LaunchTemplate": (FastLaunchLaunchTemplateSpecification, False),
"MaxParallelLaunches": (integer, False),
"SnapshotConfiguration": (FastLaunchSnapshotConfiguration, False),
}
[docs]class LaunchTemplateConfiguration(AWSProperty):
"""
`LaunchTemplateConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-launchtemplateconfiguration.html>`__
"""
props: PropsDictType = {
"AccountId": (str, False),
"LaunchTemplateId": (str, False),
"SetDefaultVersion": (boolean, False),
}
[docs]class Distribution(AWSProperty):
"""
`Distribution <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-distribution.html>`__
"""
props: PropsDictType = {
"AmiDistributionConfiguration": (AmiDistributionConfiguration, False),
"ContainerDistributionConfiguration": (
ContainerDistributionConfiguration,
False,
),
"FastLaunchConfigurations": ([FastLaunchConfiguration], False),
"LaunchTemplateConfigurations": ([LaunchTemplateConfiguration], False),
"LicenseConfigurationArns": ([str], False),
"Region": (str, True),
}
[docs]class DistributionConfiguration(AWSObject):
"""
`DistributionConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-distributionconfiguration.html>`__
"""
resource_type = "AWS::ImageBuilder::DistributionConfiguration"
props: PropsDictType = {
"Description": (str, False),
"Distributions": ([Distribution], True),
"Name": (str, True),
"Tags": (dict, False),
}
[docs]class EcrConfiguration(AWSProperty):
"""
`EcrConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-ecrconfiguration.html>`__
"""
props: PropsDictType = {
"ContainerTags": ([str], False),
"RepositoryName": (str, False),
}
[docs]class ImageScanningConfiguration(AWSProperty):
"""
`ImageScanningConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-imagescanningconfiguration.html>`__
"""
props: PropsDictType = {
"EcrConfiguration": (EcrConfiguration, False),
"ImageScanningEnabled": (boolean, False),
}
[docs]class ImageTestsConfiguration(AWSProperty):
"""
`ImageTestsConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-imagetestsconfiguration.html>`__
"""
props: PropsDictType = {
"ImageTestsEnabled": (boolean, False),
"TimeoutMinutes": (integer, False),
}
[docs]class WorkflowParameter(AWSProperty):
"""
`WorkflowParameter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-workflowparameter.html>`__
"""
props: PropsDictType = {
"Name": (str, False),
"Value": ([str], False),
}
[docs]class WorkflowConfiguration(AWSProperty):
"""
`WorkflowConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-workflowconfiguration.html>`__
"""
props: PropsDictType = {
"OnFailure": (str, False),
"ParallelGroup": (str, False),
"Parameters": ([WorkflowParameter], False),
"WorkflowArn": (str, False),
}
[docs]class Image(AWSObject):
"""
`Image <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html>`__
"""
resource_type = "AWS::ImageBuilder::Image"
props: PropsDictType = {
"ContainerRecipeArn": (str, False),
"DistributionConfigurationArn": (str, False),
"EnhancedImageMetadataEnabled": (boolean, False),
"ExecutionRole": (str, False),
"ImageRecipeArn": (str, False),
"ImageScanningConfiguration": (ImageScanningConfiguration, False),
"ImageTestsConfiguration": (ImageTestsConfiguration, False),
"InfrastructureConfigurationArn": (str, True),
"Tags": (dict, False),
"Workflows": ([WorkflowConfiguration], False),
}
[docs]class Schedule(AWSProperty):
"""
`Schedule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagepipeline-schedule.html>`__
"""
props: PropsDictType = {
"PipelineExecutionStartCondition": (
schedule_pipelineexecutionstartcondition,
False,
),
"ScheduleExpression": (str, False),
}
[docs]class ImagePipeline(AWSObject):
"""
`ImagePipeline <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-imagepipeline.html>`__
"""
resource_type = "AWS::ImageBuilder::ImagePipeline"
props: PropsDictType = {
"ContainerRecipeArn": (str, False),
"Description": (str, False),
"DistributionConfigurationArn": (str, False),
"EnhancedImageMetadataEnabled": (boolean, False),
"ExecutionRole": (str, False),
"ImageRecipeArn": (str, False),
"ImageScanningConfiguration": (ImageScanningConfiguration, False),
"ImageTestsConfiguration": (ImageTestsConfiguration, False),
"InfrastructureConfigurationArn": (str, True),
"Name": (str, True),
"Schedule": (Schedule, False),
"Status": (imagepipeline_status, False),
"Tags": (dict, False),
"Workflows": ([WorkflowConfiguration], False),
}
[docs]class SystemsManagerAgent(AWSProperty):
"""
`SystemsManagerAgent <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-systemsmanageragent.html>`__
"""
props: PropsDictType = {
"UninstallAfterBuild": (boolean, False),
}
[docs]class AdditionalInstanceConfiguration(AWSProperty):
"""
`AdditionalInstanceConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-additionalinstanceconfiguration.html>`__
"""
props: PropsDictType = {
"SystemsManagerAgent": (SystemsManagerAgent, False),
"UserDataOverride": (str, False),
}
[docs]class ComponentConfiguration(AWSProperty):
"""
`ComponentConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-componentconfiguration.html>`__
"""
props: PropsDictType = {
"ComponentArn": (str, False),
"Parameters": ([ComponentParameter], False),
}
[docs]class ImageRecipe(AWSObject):
"""
`ImageRecipe <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-imagerecipe.html>`__
"""
resource_type = "AWS::ImageBuilder::ImageRecipe"
props: PropsDictType = {
"AdditionalInstanceConfiguration": (AdditionalInstanceConfiguration, False),
"BlockDeviceMappings": ([InstanceBlockDeviceMapping], False),
"Components": ([ComponentConfiguration], True),
"Description": (str, False),
"Name": (str, True),
"ParentImage": (str, True),
"Tags": (dict, False),
"Version": (str, True),
"WorkingDirectory": (str, False),
}
[docs]class S3Logs(AWSProperty):
"""
`S3Logs <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-infrastructureconfiguration-s3logs.html>`__
"""
props: PropsDictType = {
"S3BucketName": (str, False),
"S3KeyPrefix": (str, False),
}
[docs]class Logging(AWSProperty):
"""
`Logging <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-infrastructureconfiguration-logging.html>`__
"""
props: PropsDictType = {
"S3Logs": (S3Logs, False),
}
[docs]class InfrastructureConfiguration(AWSObject):
"""
`InfrastructureConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html>`__
"""
resource_type = "AWS::ImageBuilder::InfrastructureConfiguration"
props: PropsDictType = {
"Description": (str, False),
"InstanceMetadataOptions": (InstanceMetadataOptions, False),
"InstanceProfileName": (str, True),
"InstanceTypes": ([str], False),
"KeyPair": (str, False),
"Logging": (Logging, False),
"Name": (str, True),
"ResourceTags": (dict, False),
"SecurityGroupIds": ([str], False),
"SnsTopicArn": (str, False),
"SubnetId": (str, False),
"Tags": (dict, False),
"TerminateInstanceOnFailure": (boolean, False),
}
[docs]class IncludeResources(AWSProperty):
"""
`IncludeResources <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-includeresources.html>`__
"""
props: PropsDictType = {
"Amis": (boolean, False),
"Containers": (boolean, False),
"Snapshots": (boolean, False),
}
[docs]class Action(AWSProperty):
"""
`Action <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-action.html>`__
"""
props: PropsDictType = {
"IncludeResources": (IncludeResources, False),
"Type": (str, True),
}
[docs]class LastLaunched(AWSProperty):
"""
`LastLaunched <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-lastlaunched.html>`__
"""
props: PropsDictType = {
"Unit": (str, True),
"Value": (integer, True),
}
[docs]class AmiExclusionRules(AWSProperty):
"""
`AmiExclusionRules <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-amiexclusionrules.html>`__
"""
props: PropsDictType = {
"IsPublic": (boolean, False),
"LastLaunched": (LastLaunched, False),
"Regions": ([str], False),
"SharedAccounts": ([str], False),
"TagMap": (dict, False),
}
[docs]class ExclusionRules(AWSProperty):
"""
`ExclusionRules <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-exclusionrules.html>`__
"""
props: PropsDictType = {
"Amis": (AmiExclusionRules, False),
"TagMap": (dict, False),
}
[docs]class Filter(AWSProperty):
"""
`Filter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-filter.html>`__
"""
props: PropsDictType = {
"RetainAtLeast": (integer, False),
"Type": (str, True),
"Unit": (str, False),
"Value": (integer, True),
}
[docs]class PolicyDetail(AWSProperty):
"""
`PolicyDetail <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-policydetail.html>`__
"""
props: PropsDictType = {
"Action": (Action, True),
"ExclusionRules": (ExclusionRules, False),
"Filter": (Filter, True),
}
[docs]class RecipeSelection(AWSProperty):
"""
`RecipeSelection <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-recipeselection.html>`__
"""
props: PropsDictType = {
"Name": (str, True),
"SemanticVersion": (str, True),
}
[docs]class ResourceSelection(AWSProperty):
"""
`ResourceSelection <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-lifecyclepolicy-resourceselection.html>`__
"""
props: PropsDictType = {
"Recipes": ([RecipeSelection], False),
"TagMap": (dict, False),
}
[docs]class LifecyclePolicy(AWSObject):
"""
`LifecyclePolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-lifecyclepolicy.html>`__
"""
resource_type = "AWS::ImageBuilder::LifecyclePolicy"
props: PropsDictType = {
"Description": (str, False),
"ExecutionRole": (str, True),
"Name": (str, True),
"PolicyDetails": ([PolicyDetail], True),
"ResourceSelection": (ResourceSelection, True),
"ResourceType": (str, True),
"Status": (str, False),
"Tags": (dict, False),
}
[docs]class Workflow(AWSObject):
"""
`Workflow <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-workflow.html>`__
"""
resource_type = "AWS::ImageBuilder::Workflow"
props: PropsDictType = {
"ChangeDescription": (str, False),
"Data": (str, False),
"Description": (str, False),
"KmsKeyId": (str, False),
"Name": (str, True),
"Tags": (dict, False),
"Type": (str, True),
"Uri": (str, False),
"Version": (str, True),
}