# 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, double, integer
[docs]class ComponentDependencyRequirement(AWSProperty):
"""
`ComponentDependencyRequirement <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-componentdependencyrequirement.html>`__
"""
props: PropsDictType = {
"DependencyType": (str, False),
"VersionRequirement": (str, False),
}
[docs]class LambdaEventSource(AWSProperty):
"""
`LambdaEventSource <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-lambdaeventsource.html>`__
"""
props: PropsDictType = {
"Topic": (str, False),
"Type": (str, False),
}
[docs]class LambdaDeviceMount(AWSProperty):
"""
`LambdaDeviceMount <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-lambdadevicemount.html>`__
"""
props: PropsDictType = {
"AddGroupOwner": (boolean, False),
"Path": (str, False),
"Permission": (str, False),
}
[docs]class LambdaVolumeMount(AWSProperty):
"""
`LambdaVolumeMount <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-lambdavolumemount.html>`__
"""
props: PropsDictType = {
"AddGroupOwner": (boolean, False),
"DestinationPath": (str, False),
"Permission": (str, False),
"SourcePath": (str, False),
}
[docs]class LambdaContainerParams(AWSProperty):
"""
`LambdaContainerParams <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-lambdacontainerparams.html>`__
"""
props: PropsDictType = {
"Devices": ([LambdaDeviceMount], False),
"MemorySizeInKB": (integer, False),
"MountROSysfs": (boolean, False),
"Volumes": ([LambdaVolumeMount], False),
}
[docs]class LambdaLinuxProcessParams(AWSProperty):
"""
`LambdaLinuxProcessParams <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-lambdalinuxprocessparams.html>`__
"""
props: PropsDictType = {
"ContainerParams": (LambdaContainerParams, False),
"IsolationMode": (str, False),
}
[docs]class LambdaExecutionParameters(AWSProperty):
"""
`LambdaExecutionParameters <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-lambdaexecutionparameters.html>`__
"""
props: PropsDictType = {
"EnvironmentVariables": (dict, False),
"EventSources": ([LambdaEventSource], False),
"ExecArgs": ([str], False),
"InputPayloadEncodingType": (str, False),
"LinuxProcessParams": (LambdaLinuxProcessParams, False),
"MaxIdleTimeInSeconds": (integer, False),
"MaxInstancesCount": (integer, False),
"MaxQueueSize": (integer, False),
"Pinned": (boolean, False),
"StatusTimeoutInSeconds": (integer, False),
"TimeoutInSeconds": (integer, False),
}
[docs]class LambdaFunctionRecipeSource(AWSProperty):
"""
`LambdaFunctionRecipeSource <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-componentversion-lambdafunctionrecipesource.html>`__
"""
props: PropsDictType = {
"ComponentDependencies": (dict, False),
"ComponentLambdaParameters": (LambdaExecutionParameters, False),
"ComponentName": (str, False),
"ComponentPlatforms": ([ComponentPlatform], False),
"ComponentVersion": (str, False),
"LambdaArn": (str, False),
}
[docs]class ComponentVersion(AWSObject):
"""
`ComponentVersion <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrassv2-componentversion.html>`__
"""
resource_type = "AWS::GreengrassV2::ComponentVersion"
props: PropsDictType = {
"InlineRecipe": (str, False),
"LambdaFunction": (LambdaFunctionRecipeSource, False),
"Tags": (dict, False),
}
[docs]class ComponentConfigurationUpdate(AWSProperty):
"""
`ComponentConfigurationUpdate <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-componentconfigurationupdate.html>`__
"""
props: PropsDictType = {
"Merge": (str, False),
"Reset": ([str], False),
}
[docs]class SystemResourceLimits(AWSProperty):
"""
`SystemResourceLimits <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-systemresourcelimits.html>`__
"""
props: PropsDictType = {
"Cpus": (double, False),
"Memory": (integer, False),
}
[docs]class ComponentRunWith(AWSProperty):
"""
`ComponentRunWith <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-componentrunwith.html>`__
"""
props: PropsDictType = {
"PosixUser": (str, False),
"SystemResourceLimits": (SystemResourceLimits, False),
"WindowsUser": (str, False),
}
[docs]class ComponentDeploymentSpecification(AWSProperty):
"""
`ComponentDeploymentSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-componentdeploymentspecification.html>`__
"""
props: PropsDictType = {
"ComponentVersion": (str, False),
"ConfigurationUpdate": (ComponentConfigurationUpdate, False),
"RunWith": (ComponentRunWith, False),
}
[docs]class IoTJobAbortCriteria(AWSProperty):
"""
`IoTJobAbortCriteria <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-iotjobabortcriteria.html>`__
"""
props: PropsDictType = {
"Action": (str, True),
"FailureType": (str, True),
"MinNumberOfExecutedThings": (integer, True),
"ThresholdPercentage": (double, True),
}
[docs]class IoTJobAbortConfig(AWSProperty):
"""
`IoTJobAbortConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-iotjobabortconfig.html>`__
"""
props: PropsDictType = {
"CriteriaList": ([IoTJobAbortCriteria], True),
}
[docs]class IoTJobRateIncreaseCriteria(AWSProperty):
props: PropsDictType = {
"NumberOfNotifiedThings": (integer, False),
"NumberOfSucceededThings": (integer, False),
}
[docs]class IoTJobExponentialRolloutRate(AWSProperty):
"""
`IoTJobExponentialRolloutRate <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-iotjobexponentialrolloutrate.html>`__
"""
props: PropsDictType = {
"BaseRatePerMinute": (integer, True),
"IncrementFactor": (double, True),
"RateIncreaseCriteria": (IoTJobRateIncreaseCriteria, True),
}
[docs]class IoTJobExecutionsRolloutConfig(AWSProperty):
"""
`IoTJobExecutionsRolloutConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-iotjobexecutionsrolloutconfig.html>`__
"""
props: PropsDictType = {
"ExponentialRate": (IoTJobExponentialRolloutRate, False),
"MaximumPerMinute": (integer, False),
}
[docs]class IoTJobTimeoutConfig(AWSProperty):
"""
`IoTJobTimeoutConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-iotjobtimeoutconfig.html>`__
"""
props: PropsDictType = {
"InProgressTimeoutInMinutes": (integer, False),
}
[docs]class DeploymentIoTJobConfiguration(AWSProperty):
"""
`DeploymentIoTJobConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-deploymentiotjobconfiguration.html>`__
"""
props: PropsDictType = {
"AbortConfig": (IoTJobAbortConfig, False),
"JobExecutionsRolloutConfig": (IoTJobExecutionsRolloutConfig, False),
"TimeoutConfig": (IoTJobTimeoutConfig, False),
}
[docs]class DeploymentComponentUpdatePolicy(AWSProperty):
"""
`DeploymentComponentUpdatePolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-deploymentcomponentupdatepolicy.html>`__
"""
props: PropsDictType = {
"Action": (str, False),
"TimeoutInSeconds": (integer, False),
}
[docs]class DeploymentConfigurationValidationPolicy(AWSProperty):
"""
`DeploymentConfigurationValidationPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-deploymentconfigurationvalidationpolicy.html>`__
"""
props: PropsDictType = {
"TimeoutInSeconds": (integer, False),
}
[docs]class DeploymentPolicies(AWSProperty):
"""
`DeploymentPolicies <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrassv2-deployment-deploymentpolicies.html>`__
"""
props: PropsDictType = {
"ComponentUpdatePolicy": (DeploymentComponentUpdatePolicy, False),
"ConfigurationValidationPolicy": (
DeploymentConfigurationValidationPolicy,
False,
),
"FailureHandlingPolicy": (str, False),
}
[docs]class Deployment(AWSObject):
"""
`Deployment <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrassv2-deployment.html>`__
"""
resource_type = "AWS::GreengrassV2::Deployment"
props: PropsDictType = {
"Components": (dict, False),
"DeploymentName": (str, False),
"DeploymentPolicies": (DeploymentPolicies, False),
"IotJobConfiguration": (DeploymentIoTJobConfiguration, False),
"ParentTargetArn": (str, False),
"Tags": (dict, False),
"TargetArn": (str, True),
}