diff --git a/troposphere/accessanalyzer.py b/troposphere/accessanalyzer.py index d52b86300..7f67cbafa 100644 --- a/troposphere/accessanalyzer.py +++ b/troposphere/accessanalyzer.py @@ -7,7 +7,27 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags -from .validators import boolean +from .validators import boolean, integer + + +class UnusedAccessConfiguration(AWSProperty): + """ + `UnusedAccessConfiguration `__ + """ + + props: PropsDictType = { + "UnusedAccessAge": (integer, False), + } + + +class AnalyzerConfiguration(AWSProperty): + """ + `AnalyzerConfiguration `__ + """ + + props: PropsDictType = { + "UnusedAccessConfiguration": (UnusedAccessConfiguration, False), + } class Filter(AWSProperty): @@ -43,6 +63,7 @@ class Analyzer(AWSObject): resource_type = "AWS::AccessAnalyzer::Analyzer" props: PropsDictType = { + "AnalyzerConfiguration": (AnalyzerConfiguration, False), "AnalyzerName": (str, False), "ArchiveRules": ([ArchiveRule], False), "Tags": (Tags, False), diff --git a/troposphere/acmpca.py b/troposphere/acmpca.py index ce1b96dc3..8400ae8e0 100644 --- a/troposphere/acmpca.py +++ b/troposphere/acmpca.py @@ -250,12 +250,26 @@ class CsrExtensions(AWSProperty): } +class CrlDistributionPointExtensionConfiguration(AWSProperty): + """ + `CrlDistributionPointExtensionConfiguration `__ + """ + + props: PropsDictType = { + "OmitExtension": (boolean, True), + } + + class CrlConfiguration(AWSProperty): """ `CrlConfiguration `__ """ props: PropsDictType = { + "CrlDistributionPointExtensionConfiguration": ( + CrlDistributionPointExtensionConfiguration, + False, + ), "CustomCname": (str, False), "Enabled": (boolean, False), "ExpirationInDays": (integer, False), diff --git a/troposphere/amazonmq.py b/troposphere/amazonmq.py index f2afa2406..3ab3ed177 100644 --- a/troposphere/amazonmq.py +++ b/troposphere/amazonmq.py @@ -85,6 +85,7 @@ class User(AWSProperty): "ConsoleAccess": (boolean, False), "Groups": ([str], False), "Password": (str, True), + "ReplicationUser": (boolean, False), "Username": (str, True), } diff --git a/troposphere/amplify.py b/troposphere/amplify.py index 51ebfce02..b203b6b82 100644 --- a/troposphere/amplify.py +++ b/troposphere/amplify.py @@ -127,6 +127,29 @@ class Branch(AWSObject): } +class Certificate(AWSProperty): + """ + `Certificate `__ + """ + + props: PropsDictType = { + "CertificateArn": (str, False), + "CertificateType": (str, False), + "CertificateVerificationDNSRecord": (str, False), + } + + +class CertificateSettings(AWSProperty): + """ + `CertificateSettings `__ + """ + + props: PropsDictType = { + "CertificateType": (str, False), + "CustomCertificateArn": (str, False), + } + + class SubDomainSetting(AWSProperty): """ `SubDomainSetting `__ @@ -149,7 +172,10 @@ class Domain(AWSObject): "AppId": (str, True), "AutoSubDomainCreationPatterns": ([str], False), "AutoSubDomainIAMRole": (str, False), + "Certificate": (Certificate, False), + "CertificateSettings": (CertificateSettings, False), "DomainName": (str, True), "EnableAutoSubDomain": (boolean, False), "SubDomainSettings": ([SubDomainSetting], True), + "UpdateStatus": (str, False), } diff --git a/troposphere/apigateway.py b/troposphere/apigateway.py index 763c39db4..f14a52642 100644 --- a/troposphere/apigateway.py +++ b/troposphere/apigateway.py @@ -297,7 +297,7 @@ class GatewayResponse(AWSObject): class IntegrationResponse(AWSProperty): """ - `IntegrationResponse `__ + `IntegrationResponse `__ """ props: PropsDictType = { @@ -311,7 +311,7 @@ class IntegrationResponse(AWSProperty): class Integration(AWSProperty): """ - `Integration `__ + `Integration `__ """ props: PropsDictType = { @@ -327,14 +327,14 @@ class Integration(AWSProperty): "RequestParameters": (dict, False), "RequestTemplates": (dict, False), "TimeoutInMillis": (validate_timeout_in_millis, False), - "Type": (str, False), + "Type": (str, True), "Uri": (str, False), } class MethodResponse(AWSProperty): """ - `MethodResponse `__ + `MethodResponse `__ """ props: PropsDictType = { diff --git a/troposphere/appconfig.py b/troposphere/appconfig.py index 92c3bb5c2..e67d78699 100644 --- a/troposphere/appconfig.py +++ b/troposphere/appconfig.py @@ -98,13 +98,13 @@ class DeploymentStrategy(AWSObject): } -class Monitors(AWSProperty): +class Monitor(AWSProperty): """ - `Monitors `__ + `Monitor `__ """ props: PropsDictType = { - "AlarmArn": (str, False), + "AlarmArn": (str, True), "AlarmRoleArn": (str, False), } @@ -119,7 +119,7 @@ class Environment(AWSObject): props: PropsDictType = { "ApplicationId": (str, True), "Description": (str, False), - "Monitors": ([Monitors], False), + "Monitors": ([Monitor], False), "Name": (str, True), "Tags": (Tags, False), } @@ -182,6 +182,6 @@ class HostedConfigurationVersion(AWSObject): "Content": (str, True), "ContentType": (str, True), "Description": (str, False), - "LatestVersionNumber": (double, False), + "LatestVersionNumber": (integer, False), "VersionLabel": (str, False), } diff --git a/troposphere/applicationautoscaling.py b/troposphere/applicationautoscaling.py index 983b4e9aa..b61b36f9a 100644 --- a/troposphere/applicationautoscaling.py +++ b/troposphere/applicationautoscaling.py @@ -69,7 +69,7 @@ class ScalableTarget(AWSObject): class StepAdjustment(AWSProperty): """ - `StepAdjustment `__ + `StepAdjustment `__ """ props: PropsDictType = { @@ -104,6 +104,55 @@ class MetricDimension(AWSProperty): } +class TargetTrackingMetricDimension(AWSProperty): + """ + `TargetTrackingMetricDimension `__ + """ + + props: PropsDictType = { + "Name": (str, False), + "Value": (str, False), + } + + +class TargetTrackingMetric(AWSProperty): + """ + `TargetTrackingMetric `__ + """ + + props: PropsDictType = { + "Dimensions": ([TargetTrackingMetricDimension], False), + "MetricName": (str, False), + "Namespace": (str, False), + } + + +class TargetTrackingMetricStat(AWSProperty): + """ + `TargetTrackingMetricStat `__ + """ + + props: PropsDictType = { + "Metric": (TargetTrackingMetric, False), + "Stat": (str, False), + "Unit": (str, False), + } + + +class TargetTrackingMetricDataQuery(AWSProperty): + """ + `TargetTrackingMetricDataQuery `__ + """ + + props: PropsDictType = { + "Expression": (str, False), + "Id": (str, False), + "Label": (str, False), + "MetricStat": (TargetTrackingMetricStat, False), + "ReturnData": (boolean, False), + } + + class CustomizedMetricSpecification(AWSProperty): """ `CustomizedMetricSpecification `__ @@ -111,9 +160,10 @@ class CustomizedMetricSpecification(AWSProperty): props: PropsDictType = { "Dimensions": ([MetricDimension], False), - "MetricName": (str, True), - "Namespace": (str, True), - "Statistic": (str, True), + "MetricName": (str, False), + "Metrics": ([TargetTrackingMetricDataQuery], False), + "Namespace": (str, False), + "Statistic": (str, False), "Unit": (str, False), } diff --git a/troposphere/apprunner.py b/troposphere/apprunner.py index 2cee71827..a9366ce04 100644 --- a/troposphere/apprunner.py +++ b/troposphere/apprunner.py @@ -116,6 +116,7 @@ class NetworkConfiguration(AWSProperty): props: PropsDictType = { "EgressConfiguration": (EgressConfiguration, False), "IngressConfiguration": (IngressConfiguration, False), + "IpAddressType": (str, False), } diff --git a/troposphere/appstream.py b/troposphere/appstream.py index d71d2f91e..6649c5557 100644 --- a/troposphere/appstream.py +++ b/troposphere/appstream.py @@ -331,6 +331,7 @@ class UserSetting(AWSProperty): props: PropsDictType = { "Action": (str, True), + "MaximumLength": (integer, False), "Permission": (str, True), } diff --git a/troposphere/appsync.py b/troposphere/appsync.py index 83756d5d2..230d33eb7 100644 --- a/troposphere/appsync.py +++ b/troposphere/appsync.py @@ -22,6 +22,7 @@ class ApiCache(AWSObject): "ApiCachingBehavior": (str, True), "ApiId": (str, True), "AtRestEncryptionEnabled": (boolean, False), + "HealthMetricsConfig": (str, False), "TransitEncryptionEnabled": (boolean, False), "Ttl": (double, True), "Type": (str, True), @@ -184,6 +185,7 @@ class DataSource(AWSObject): "EventBridgeConfig": (EventBridgeConfig, False), "HttpConfig": (HttpConfig, False), "LambdaConfig": (LambdaConfig, False), + "MetricsConfig": (str, False), "Name": (str, True), "OpenSearchServiceConfig": (OpenSearchServiceConfig, False), "RelationalDatabaseConfig": (RelationalDatabaseConfig, False), @@ -327,6 +329,18 @@ class AdditionalAuthenticationProvider(AWSProperty): } +class EnhancedMetricsConfig(AWSProperty): + """ + `EnhancedMetricsConfig `__ + """ + + props: PropsDictType = { + "DataSourceLevelMetricsBehavior": (str, True), + "OperationLevelMetricsConfig": (str, True), + "ResolverLevelMetricsBehavior": (str, True), + } + + class LogConfig(AWSProperty): """ `LogConfig `__ @@ -366,12 +380,17 @@ class GraphQLApi(AWSObject): ), "ApiType": (str, False), "AuthenticationType": (str, True), + "EnhancedMetricsConfig": (EnhancedMetricsConfig, False), + "EnvironmentVariables": (dict, False), + "IntrospectionConfig": (str, False), "LambdaAuthorizerConfig": (LambdaAuthorizerConfig, False), "LogConfig": (LogConfig, False), "MergedApiExecutionRoleArn": (str, False), "Name": (str, True), "OpenIDConnectConfig": (OpenIDConnectConfig, False), "OwnerContact": (str, False), + "QueryDepthLimit": (integer, False), + "ResolverCountLimit": (integer, False), "Tags": (Tags, False), "UserPoolConfig": (UserPoolConfig, False), "Visibility": (str, False), @@ -430,6 +449,7 @@ class Resolver(AWSObject): "FieldName": (str, True), "Kind": (resolver_kind_validator, False), "MaxBatchSize": (integer, False), + "MetricsConfig": (str, False), "PipelineConfig": (PipelineConfig, False), "RequestMappingTemplate": (str, False), "RequestMappingTemplateS3Location": (str, False), diff --git a/troposphere/aps.py b/troposphere/aps.py index ebcb406ae..f1b9950d3 100644 --- a/troposphere/aps.py +++ b/troposphere/aps.py @@ -44,6 +44,7 @@ class Workspace(AWSObject): props: PropsDictType = { "AlertManagerDefinition": (str, False), "Alias": (str, False), + "KmsKeyArn": (str, False), "LoggingConfiguration": (LoggingConfiguration, False), "Tags": (Tags, False), } diff --git a/troposphere/autoscaling.py b/troposphere/autoscaling.py index af3951118..e0f74ea51 100644 --- a/troposphere/autoscaling.py +++ b/troposphere/autoscaling.py @@ -31,6 +31,17 @@ ) +class InstanceMaintenancePolicy(AWSProperty): + """ + `InstanceMaintenancePolicy `__ + """ + + props: PropsDictType = { + "MaxHealthyPercentage": (integer, False), + "MinHealthyPercentage": (integer, False), + } + + class LaunchTemplateSpecification(AWSProperty): """ `LaunchTemplateSpecification `__ @@ -207,15 +218,16 @@ class InstanceRequirements(AWSProperty): "InstanceGenerations": ([str], False), "LocalStorage": (str, False), "LocalStorageTypes": ([str], False), + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": (integer, False), "MemoryGiBPerVCpu": (MemoryGiBPerVCpuRequest, False), - "MemoryMiB": (MemoryMiBRequest, False), + "MemoryMiB": (MemoryMiBRequest, True), "NetworkBandwidthGbps": (NetworkBandwidthGbpsRequest, False), "NetworkInterfaceCount": (NetworkInterfaceCountRequest, False), "OnDemandMaxPricePercentageOverLowestPrice": (integer, False), "RequireHibernateSupport": (boolean, False), "SpotMaxPricePercentageOverLowestPrice": (integer, False), "TotalLocalStorageGB": (TotalLocalStorageGBRequest, False), - "VCpuCount": (VCpuCountRequest, False), + "VCpuCount": (VCpuCountRequest, True), } @@ -284,6 +296,7 @@ class AutoScalingGroup(AWSObject): "HealthCheckGracePeriod": (integer, False), "HealthCheckType": (str, False), "InstanceId": (str, False), + "InstanceMaintenancePolicy": (InstanceMaintenancePolicy, False), "LaunchConfigurationName": (str, False), "LaunchTemplate": (LaunchTemplateSpecification, False), "LifecycleHookSpecificationList": ([LifecycleHookSpecification], False), diff --git a/troposphere/awslambda.py b/troposphere/awslambda.py index 7ce054e88..f5791af34 100644 --- a/troposphere/awslambda.py +++ b/troposphere/awslambda.py @@ -103,7 +103,7 @@ class CodeSigningConfig(AWSObject): class OnFailure(AWSProperty): """ - `OnFailure `__ + `OnFailure `__ """ props: PropsDictType = { @@ -113,7 +113,7 @@ class OnFailure(AWSProperty): class OnSuccess(AWSProperty): """ - `OnSuccess `__ + `OnSuccess `__ """ props: PropsDictType = { @@ -351,6 +351,19 @@ def validate(self): validate_image_config(self) +class LoggingConfig(AWSProperty): + """ + `LoggingConfig `__ + """ + + props: PropsDictType = { + "ApplicationLogLevel": (str, False), + "LogFormat": (str, False), + "LogGroup": (str, False), + "SystemLogLevel": (str, False), + } + + class RuntimeManagementConfig(AWSProperty): """ `RuntimeManagementConfig `__ @@ -415,9 +428,9 @@ class Function(AWSObject): "ImageConfig": (ImageConfig, False), "KmsKeyArn": (str, False), "Layers": ([str], False), + "LoggingConfig": (LoggingConfig, False), "MemorySize": (validate_memory_size, False), "PackageType": (validate_package_type, False), - "Policy": (dict, False), "ReservedConcurrentExecutions": (integer, False), "Role": (str, True), "Runtime": (str, False), diff --git a/troposphere/backup.py b/troposphere/backup.py index b5a36a713..a2eb05395 100644 --- a/troposphere/backup.py +++ b/troposphere/backup.py @@ -34,6 +34,7 @@ class LifecycleResourceType(AWSProperty): props: PropsDictType = { "DeleteAfterDays": (double, False), "MoveToColdStorageAfterDays": (double, False), + "OptInToArchiveForSupportedResources": (boolean, False), } @@ -289,3 +290,75 @@ class ReportPlan(AWSObject): "ReportPlanTags": (Tags, False), "ReportSetting": (ReportSetting, True), } + + +class RestoreTestingRecoveryPointSelection(AWSProperty): + """ + `RestoreTestingRecoveryPointSelection `__ + """ + + props: PropsDictType = { + "Algorithm": (str, True), + "ExcludeVaults": ([str], False), + "IncludeVaults": ([str], True), + "RecoveryPointTypes": ([str], True), + "SelectionWindowDays": (integer, False), + } + + +class RestoreTestingPlan(AWSObject): + """ + `RestoreTestingPlan `__ + """ + + resource_type = "AWS::Backup::RestoreTestingPlan" + + props: PropsDictType = { + "RecoveryPointSelection": (RestoreTestingRecoveryPointSelection, True), + "RestoreTestingPlanName": (str, True), + "ScheduleExpression": (str, True), + "ScheduleExpressionTimezone": (str, False), + "StartWindowHours": (integer, False), + "Tags": (Tags, False), + } + + +class KeyValue(AWSProperty): + """ + `KeyValue `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (str, True), + } + + +class ProtectedResourceConditions(AWSProperty): + """ + `ProtectedResourceConditions `__ + """ + + props: PropsDictType = { + "StringEquals": ([KeyValue], False), + "StringNotEquals": ([KeyValue], False), + } + + +class RestoreTestingSelection(AWSObject): + """ + `RestoreTestingSelection `__ + """ + + resource_type = "AWS::Backup::RestoreTestingSelection" + + props: PropsDictType = { + "IamRoleArn": (str, True), + "ProtectedResourceArns": ([str], False), + "ProtectedResourceConditions": (ProtectedResourceConditions, False), + "ProtectedResourceType": (str, True), + "RestoreMetadataOverrides": (dict, False), + "RestoreTestingPlanName": (str, True), + "RestoreTestingSelectionName": (str, True), + "ValidationWindowHours": (integer, False), + } diff --git a/troposphere/batch.py b/troposphere/batch.py index 106fcf362..f4fd28bb7 100644 --- a/troposphere/batch.py +++ b/troposphere/batch.py @@ -126,7 +126,7 @@ class Environment(AWSProperty): class EphemeralStorage(AWSProperty): """ - `EphemeralStorage `__ + `EphemeralStorage `__ """ props: PropsDictType = { @@ -170,7 +170,7 @@ class Tmpfs(AWSProperty): class LinuxParameters(AWSProperty): """ - `LinuxParameters `__ + `LinuxParameters `__ """ props: PropsDictType = { @@ -196,7 +196,7 @@ class Secret(AWSProperty): class LogConfiguration(AWSProperty): """ - `LogConfiguration `__ + `LogConfiguration `__ """ props: PropsDictType = { @@ -220,7 +220,7 @@ class MountPoints(AWSProperty): class NetworkConfiguration(AWSProperty): """ - `NetworkConfiguration `__ + `NetworkConfiguration `__ """ props: PropsDictType = { @@ -228,6 +228,16 @@ class NetworkConfiguration(AWSProperty): } +class RepositoryCredentials(AWSProperty): + """ + `RepositoryCredentials `__ + """ + + props: PropsDictType = { + "CredentialsParameter": (str, True), + } + + class ResourceRequirement(AWSProperty): """ `ResourceRequirement `__ @@ -241,7 +251,7 @@ class ResourceRequirement(AWSProperty): class RuntimePlatform(AWSProperty): """ - `RuntimePlatform `__ + `RuntimePlatform `__ """ props: PropsDictType = { @@ -330,6 +340,7 @@ class ContainerProperties(AWSProperty): "NetworkConfiguration": (NetworkConfiguration, False), "Privileged": (boolean, False), "ReadonlyRootFilesystem": (boolean, False), + "RepositoryCredentials": (RepositoryCredentials, False), "ResourceRequirements": ([ResourceRequirement], False), "RuntimePlatform": (RuntimePlatform, False), "Secrets": ([Secret], False), @@ -340,6 +351,71 @@ class ContainerProperties(AWSProperty): } +class TaskContainerDependency(AWSProperty): + """ + `TaskContainerDependency `__ + """ + + props: PropsDictType = { + "Condition": (str, True), + "ContainerName": (str, True), + } + + +class TaskContainerProperties(AWSProperty): + """ + `TaskContainerProperties `__ + """ + + props: PropsDictType = { + "Command": ([str], False), + "DependsOn": ([TaskContainerDependency], False), + "Environment": ([Environment], False), + "Essential": (boolean, False), + "Image": (str, True), + "LinuxParameters": (LinuxParameters, False), + "LogConfiguration": (LogConfiguration, False), + "MountPoints": ([MountPoints], False), + "Name": (str, False), + "Privileged": (boolean, False), + "ReadonlyRootFilesystem": (boolean, False), + "RepositoryCredentials": (RepositoryCredentials, False), + "ResourceRequirements": ([ResourceRequirement], False), + "Secrets": ([Secret], False), + "Ulimits": ([Ulimit], False), + "User": (str, False), + } + + +class EcsTaskProperties(AWSProperty): + """ + `EcsTaskProperties `__ + """ + + props: PropsDictType = { + "Containers": ([TaskContainerProperties], False), + "EphemeralStorage": (EphemeralStorage, False), + "ExecutionRoleArn": (str, False), + "IpcMode": (str, False), + "NetworkConfiguration": (NetworkConfiguration, False), + "PidMode": (str, False), + "PlatformVersion": (str, False), + "RuntimePlatform": (RuntimePlatform, False), + "TaskRoleArn": (str, False), + "Volumes": ([Volumes], False), + } + + +class EcsProperties(AWSProperty): + """ + `EcsProperties `__ + """ + + props: PropsDictType = { + "TaskProperties": ([EcsTaskProperties], True), + } + + class EksContainerEnvironmentVariable(AWSProperty): """ `EksContainerEnvironmentVariable `__ @@ -470,8 +546,10 @@ class PodProperties(AWSProperty): "Containers": ([EksContainer], False), "DnsPolicy": (str, False), "HostNetwork": (boolean, False), + "InitContainers": ([EksContainer], False), "Metadata": (Metadata, False), "ServiceAccountName": (str, False), + "ShareProcessNamespace": (boolean, False), "Volumes": ([EksVolume], False), } @@ -493,6 +571,8 @@ class NodeRangeProperty(AWSProperty): props: PropsDictType = { "Container": (ContainerProperties, False), + "EcsProperties": (EcsProperties, False), + "InstanceTypes": ([str], False), "TargetNodes": (str, True), } @@ -552,6 +632,7 @@ class JobDefinition(AWSObject): props: PropsDictType = { "ContainerProperties": (ContainerProperties, False), + "EcsProperties": (EcsProperties, False), "EksProperties": (EksProperties, False), "JobDefinitionName": (str, False), "NodeProperties": (NodeProperties, False), diff --git a/troposphere/billingconductor.py b/troposphere/billingconductor.py index 75458480c..4a2faaa5e 100644 --- a/troposphere/billingconductor.py +++ b/troposphere/billingconductor.py @@ -113,6 +113,7 @@ class CustomLineItem(AWSObject): resource_type = "AWS::BillingConductor::CustomLineItem" props: PropsDictType = { + "AccountId": (str, False), "BillingGroupArn": (str, True), "BillingPeriodRange": (BillingPeriodRange, False), "CustomLineItemChargeDetails": (CustomLineItemChargeDetails, False), diff --git a/troposphere/cassandra.py b/troposphere/cassandra.py index a372e6373..a43846699 100644 --- a/troposphere/cassandra.py +++ b/troposphere/cassandra.py @@ -39,6 +39,56 @@ class Keyspace(AWSObject): } +class TargetTrackingScalingPolicyConfiguration(AWSProperty): + """ + `TargetTrackingScalingPolicyConfiguration `__ + """ + + props: PropsDictType = { + "DisableScaleIn": (boolean, False), + "ScaleInCooldown": (integer, False), + "ScaleOutCooldown": (integer, False), + "TargetValue": (integer, True), + } + + +class ScalingPolicy(AWSProperty): + """ + `ScalingPolicy `__ + """ + + props: PropsDictType = { + "TargetTrackingScalingPolicyConfiguration": ( + TargetTrackingScalingPolicyConfiguration, + False, + ), + } + + +class AutoScalingSetting(AWSProperty): + """ + `AutoScalingSetting `__ + """ + + props: PropsDictType = { + "AutoScalingDisabled": (boolean, False), + "MaximumUnits": (integer, False), + "MinimumUnits": (integer, False), + "ScalingPolicy": (ScalingPolicy, False), + } + + +class AutoScalingSpecification(AWSProperty): + """ + `AutoScalingSpecification `__ + """ + + props: PropsDictType = { + "ReadCapacityAutoScaling": (AutoScalingSetting, False), + "WriteCapacityAutoScaling": (AutoScalingSetting, False), + } + + class ProvisionedThroughput(AWSProperty): """ `ProvisionedThroughput `__ @@ -94,6 +144,18 @@ class EncryptionSpecification(AWSProperty): } +class ReplicaSpecification(AWSProperty): + """ + `ReplicaSpecification `__ + """ + + props: PropsDictType = { + "ReadCapacityAutoScaling": (AutoScalingSetting, False), + "ReadCapacityUnits": (integer, False), + "Region": (str, True), + } + + class Table(AWSObject): """ `Table `__ @@ -102,6 +164,7 @@ class Table(AWSObject): resource_type = "AWS::Cassandra::Table" props: PropsDictType = { + "AutoScalingSpecifications": (AutoScalingSpecification, False), "BillingMode": (BillingMode, False), "ClientSideTimestampsEnabled": (boolean, False), "ClusteringKeyColumns": ([ClusteringKeyColumn], False), @@ -111,6 +174,7 @@ class Table(AWSObject): "PartitionKeyColumns": ([Column], True), "PointInTimeRecoveryEnabled": (boolean, False), "RegularColumns": ([Column], False), + "ReplicaSpecifications": ([ReplicaSpecification], False), "TableName": (str, False), "Tags": (Tags, False), } diff --git a/troposphere/cleanrooms.py b/troposphere/cleanrooms.py index 270e1ef0b..42fbbfce6 100644 --- a/troposphere/cleanrooms.py +++ b/troposphere/cleanrooms.py @@ -63,6 +63,26 @@ class DataEncryptionMetadata(AWSProperty): } +class QueryComputePaymentConfig(AWSProperty): + """ + `QueryComputePaymentConfig `__ + """ + + props: PropsDictType = { + "IsResponsible": (boolean, True), + } + + +class PaymentConfiguration(AWSProperty): + """ + `PaymentConfiguration `__ + """ + + props: PropsDictType = { + "QueryCompute": (QueryComputePaymentConfig, True), + } + + class MemberSpecification(AWSProperty): """ `MemberSpecification `__ @@ -72,6 +92,7 @@ class MemberSpecification(AWSProperty): "AccountId": (str, True), "DisplayName": (str, True), "MemberAbilities": ([str], True), + "PaymentConfiguration": (PaymentConfiguration, False), } @@ -85,6 +106,7 @@ class Collaboration(AWSObject): props: PropsDictType = { "CreatorDisplayName": (str, True), "CreatorMemberAbilities": ([str], True), + "CreatorPaymentConfiguration": (PaymentConfiguration, False), "DataEncryptionMetadata": (DataEncryptionMetadata, False), "Description": (str, True), "Members": ([MemberSpecification], True), @@ -245,6 +267,26 @@ class ConfiguredTableAssociation(AWSObject): } +class MembershipQueryComputePaymentConfig(AWSProperty): + """ + `MembershipQueryComputePaymentConfig `__ + """ + + props: PropsDictType = { + "IsResponsible": (boolean, True), + } + + +class MembershipPaymentConfiguration(AWSProperty): + """ + `MembershipPaymentConfiguration `__ + """ + + props: PropsDictType = { + "QueryCompute": (MembershipQueryComputePaymentConfig, True), + } + + class ProtectedQueryS3OutputConfiguration(AWSProperty): """ `ProtectedQueryS3OutputConfiguration `__ @@ -291,6 +333,7 @@ class Membership(AWSObject): MembershipProtectedQueryResultConfiguration, False, ), + "PaymentConfiguration": (MembershipPaymentConfiguration, False), "QueryLogStatus": (str, True), "Tags": (Tags, False), } diff --git a/troposphere/cloud9.py b/troposphere/cloud9.py index 1cb93e485..f59cc1ea0 100644 --- a/troposphere/cloud9.py +++ b/troposphere/cloud9.py @@ -32,7 +32,7 @@ class EnvironmentEC2(AWSObject): "AutomaticStopTimeMinutes": (integer, False), "ConnectionType": (str, False), "Description": (str, False), - "ImageId": (str, False), + "ImageId": (str, True), "InstanceType": (str, True), "Name": (str, False), "OwnerArn": (str, False), diff --git a/troposphere/cloudfront.py b/troposphere/cloudfront.py index c36399f45..9efae741b 100644 --- a/troposphere/cloudfront.py +++ b/troposphere/cloudfront.py @@ -587,6 +587,16 @@ class Distribution(AWSObject): } +class KeyValueStoreAssociation(AWSProperty): + """ + `KeyValueStoreAssociation `__ + """ + + props: PropsDictType = { + "KeyValueStoreARN": (str, True), + } + + class FunctionConfig(AWSProperty): """ `FunctionConfig `__ @@ -594,6 +604,7 @@ class FunctionConfig(AWSProperty): props: PropsDictType = { "Comment": (str, True), + "KeyValueStoreAssociations": ([KeyValueStoreAssociation], False), "Runtime": (str, True), } @@ -648,6 +659,31 @@ class KeyGroup(AWSObject): } +class ImportSource(AWSProperty): + """ + `ImportSource `__ + """ + + props: PropsDictType = { + "SourceArn": (str, True), + "SourceType": (str, True), + } + + +class KeyValueStore(AWSObject): + """ + `KeyValueStore `__ + """ + + resource_type = "AWS::CloudFront::KeyValueStore" + + props: PropsDictType = { + "Comment": (str, False), + "ImportSource": (ImportSource, False), + "Name": (str, True), + } + + class RealtimeMetricsSubscriptionConfig(AWSProperty): """ `RealtimeMetricsSubscriptionConfig `__ diff --git a/troposphere/cloudtrail.py b/troposphere/cloudtrail.py index e9130df4e..a0756130b 100644 --- a/troposphere/cloudtrail.py +++ b/troposphere/cloudtrail.py @@ -63,6 +63,16 @@ class AdvancedEventSelector(AWSProperty): } +class InsightSelector(AWSProperty): + """ + `InsightSelector `__ + """ + + props: PropsDictType = { + "InsightType": (str, False), + } + + class EventDataStore(AWSObject): """ `EventDataStore `__ @@ -72,7 +82,12 @@ class EventDataStore(AWSObject): props: PropsDictType = { "AdvancedEventSelectors": ([AdvancedEventSelector], False), + "BillingMode": (str, False), + "FederationEnabled": (boolean, False), + "FederationRoleArn": (str, False), "IngestionEnabled": (boolean, False), + "InsightSelectors": ([InsightSelector], False), + "InsightsDestination": (str, False), "KmsKeyId": (str, False), "MultiRegionEnabled": (boolean, False), "Name": (str, False), @@ -120,16 +135,6 @@ class EventSelector(AWSProperty): } -class InsightSelector(AWSProperty): - """ - `InsightSelector `__ - """ - - props: PropsDictType = { - "InsightType": (str, False), - } - - class Trail(AWSObject): """ `Trail `__ diff --git a/troposphere/codebuild.py b/troposphere/codebuild.py index 86af8d90b..2d0b255e0 100644 --- a/troposphere/codebuild.py +++ b/troposphere/codebuild.py @@ -25,6 +25,22 @@ ) +class Fleet(AWSObject): + """ + `Fleet `__ + """ + + resource_type = "AWS::CodeBuild::Fleet" + + props: PropsDictType = { + "BaseCapacity": (integer, False), + "ComputeType": (str, False), + "EnvironmentType": (str, False), + "Name": (str, False), + "Tags": (Tags, False), + } + + class Artifacts(AWSProperty): """ `Artifacts `__ @@ -61,6 +77,16 @@ def validate(self): validate_environment_variable(self) +class ProjectFleet(AWSProperty): + """ + `ProjectFleet `__ + """ + + props: PropsDictType = { + "FleetArn": (str, False), + } + + class RegistryCredential(AWSProperty): """ `RegistryCredential `__ @@ -81,6 +107,7 @@ class Environment(AWSProperty): "Certificate": (str, False), "ComputeType": (str, True), "EnvironmentVariables": (validate_environmentvariable_or_list, False), + "Fleet": (ProjectFleet, False), "Image": (str, True), "ImagePullCredentialsType": (validate_image_pull_credentials, False), "PrivilegedMode": (boolean, False), diff --git a/troposphere/codecommit.py b/troposphere/codecommit.py index a9bb39ab5..98f005bb8 100644 --- a/troposphere/codecommit.py +++ b/troposphere/codecommit.py @@ -59,6 +59,7 @@ class Repository(AWSObject): props: PropsDictType = { "Code": (Code, False), + "KmsKeyId": (str, False), "RepositoryDescription": (str, False), "RepositoryName": (str, True), "Tags": (Tags, False), diff --git a/troposphere/codedeploy.py b/troposphere/codedeploy.py index 114bd4ea4..b77c2e1c3 100644 --- a/troposphere/codedeploy.py +++ b/troposphere/codedeploy.py @@ -78,6 +78,29 @@ class TrafficRoutingConfig(AWSProperty): } +class MinimumHealthyHostsPerZone(AWSProperty): + """ + `MinimumHealthyHostsPerZone `__ + """ + + props: PropsDictType = { + "Type": (str, True), + "Value": (integer, True), + } + + +class ZonalConfig(AWSProperty): + """ + `ZonalConfig `__ + """ + + props: PropsDictType = { + "FirstZoneMonitorDurationInSeconds": (integer, False), + "MinimumHealthyHostsPerZone": (MinimumHealthyHostsPerZone, False), + "MonitorDurationInSeconds": (integer, False), + } + + class DeploymentConfig(AWSObject): """ `DeploymentConfig `__ @@ -90,6 +113,7 @@ class DeploymentConfig(AWSObject): "DeploymentConfigName": (str, False), "MinimumHealthyHosts": (MinimumHealthyHosts, False), "TrafficRoutingConfig": (TrafficRoutingConfig, False), + "ZonalConfig": (ZonalConfig, False), } @@ -415,6 +439,7 @@ class DeploymentGroup(AWSObject): "OutdatedInstancesStrategy": (str, False), "ServiceRoleArn": (str, True), "Tags": (Tags, False), + "TerminationHookEnabled": (boolean, False), "TriggerConfigurations": ([TriggerConfig], False), } diff --git a/troposphere/codepipeline.py b/troposphere/codepipeline.py index ea35fe472..662a1cd40 100644 --- a/troposphere/codepipeline.py +++ b/troposphere/codepipeline.py @@ -114,6 +114,86 @@ class DisableInboundStageTransitions(AWSProperty): } +class GitBranchFilterCriteria(AWSProperty): + """ + `GitBranchFilterCriteria `__ + """ + + props: PropsDictType = { + "Excludes": ([str], False), + "Includes": ([str], False), + } + + +class GitFilePathFilterCriteria(AWSProperty): + """ + `GitFilePathFilterCriteria `__ + """ + + props: PropsDictType = { + "Excludes": ([str], False), + "Includes": ([str], False), + } + + +class GitPullRequestFilter(AWSProperty): + """ + `GitPullRequestFilter `__ + """ + + props: PropsDictType = { + "Branches": (GitBranchFilterCriteria, False), + "Events": ([str], False), + "FilePaths": (GitFilePathFilterCriteria, False), + } + + +class GitTagFilterCriteria(AWSProperty): + """ + `GitTagFilterCriteria `__ + """ + + props: PropsDictType = { + "Excludes": ([str], False), + "Includes": ([str], False), + } + + +class GitPushFilter(AWSProperty): + """ + `GitPushFilter `__ + """ + + props: PropsDictType = { + "Branches": (GitBranchFilterCriteria, False), + "FilePaths": (GitFilePathFilterCriteria, False), + "Tags": (GitTagFilterCriteria, False), + } + + +class GitConfiguration(AWSProperty): + """ + `GitConfiguration `__ + """ + + props: PropsDictType = { + "PullRequest": ([GitPullRequestFilter], False), + "Push": ([GitPushFilter], False), + "SourceActionName": (str, True), + } + + +class PipelineTriggerDeclaration(AWSProperty): + """ + `PipelineTriggerDeclaration `__ + """ + + props: PropsDictType = { + "GitConfiguration": (GitConfiguration, False), + "ProviderType": (str, True), + } + + class ActionTypeId(AWSProperty): """ `ActionTypeId `__ @@ -188,6 +268,18 @@ class Stages(AWSProperty): } +class VariableDeclaration(AWSProperty): + """ + `VariableDeclaration `__ + """ + + props: PropsDictType = { + "DefaultValue": (str, False), + "Description": (str, False), + "Name": (str, True), + } + + class Pipeline(AWSObject): """ `Pipeline `__ @@ -199,11 +291,15 @@ class Pipeline(AWSObject): "ArtifactStore": (ArtifactStore, False), "ArtifactStores": ([ArtifactStoreMap], False), "DisableInboundStageTransitions": ([DisableInboundStageTransitions], False), + "ExecutionMode": (str, False), "Name": (str, False), + "PipelineType": (str, False), "RestartExecutionOnUpdate": (boolean, False), "RoleArn": (str, True), "Stages": ([Stages], True), "Tags": (Tags, False), + "Triggers": ([PipelineTriggerDeclaration], False), + "Variables": ([VariableDeclaration], False), } diff --git a/troposphere/codestarconnections.py b/troposphere/codestarconnections.py index 7cdbd7f78..4b422b124 100644 --- a/troposphere/codestarconnections.py +++ b/troposphere/codestarconnections.py @@ -23,3 +23,36 @@ class Connection(AWSObject): "ProviderType": (validate_connection_providertype, False), "Tags": (Tags, False), } + + +class RepositoryLink(AWSObject): + """ + `RepositoryLink `__ + """ + + resource_type = "AWS::CodeStarConnections::RepositoryLink" + + props: PropsDictType = { + "ConnectionArn": (str, True), + "EncryptionKeyArn": (str, False), + "OwnerId": (str, True), + "RepositoryName": (str, True), + "Tags": (Tags, False), + } + + +class SyncConfiguration(AWSObject): + """ + `SyncConfiguration `__ + """ + + resource_type = "AWS::CodeStarConnections::SyncConfiguration" + + props: PropsDictType = { + "Branch": (str, True), + "ConfigFile": (str, True), + "RepositoryLinkId": (str, True), + "ResourceName": (str, True), + "RoleArn": (str, True), + "SyncType": (str, True), + } diff --git a/troposphere/cognito.py b/troposphere/cognito.py index 2f1fdbeff..fb9208cf2 100644 --- a/troposphere/cognito.py +++ b/troposphere/cognito.py @@ -17,8 +17,8 @@ class CognitoIdentityProvider(AWSProperty): """ props: PropsDictType = { - "ClientId": (str, False), - "ProviderName": (str, False), + "ClientId": (str, True), + "ProviderName": (str, True), "ServerSideTokenCheck": (boolean, False), } @@ -83,6 +83,42 @@ class IdentityPoolPrincipalTag(AWSObject): } +class MappingRule(AWSProperty): + """ + `MappingRule `__ + """ + + props: PropsDictType = { + "Claim": (str, True), + "MatchType": (str, True), + "RoleARN": (str, True), + "Value": (str, True), + } + + +class RulesConfiguration(AWSProperty): + """ + `RulesConfiguration `__ + """ + + props: PropsDictType = { + "Rules": ([MappingRule], True), + } + + +class RoleMapping(AWSProperty): + """ + `RoleMapping `__ + """ + + props: PropsDictType = { + "AmbiguousRoleResolution": (str, False), + "IdentityProvider": (str, False), + "RulesConfiguration": (RulesConfiguration, False), + "Type": (str, True), + } + + class IdentityPoolRoleAttachment(AWSObject): """ `IdentityPoolRoleAttachment `__ @@ -224,6 +260,17 @@ class CustomSMSSender(AWSProperty): } +class PreTokenGenerationConfig(AWSProperty): + """ + `PreTokenGenerationConfig `__ + """ + + props: PropsDictType = { + "LambdaArn": (str, False), + "LambdaVersion": (str, False), + } + + class LambdaConfig(AWSProperty): """ `LambdaConfig `__ @@ -241,6 +288,7 @@ class LambdaConfig(AWSProperty): "PreAuthentication": (str, False), "PreSignUp": (str, False), "PreTokenGeneration": (str, False), + "PreTokenGenerationConfig": (PreTokenGenerationConfig, False), "UserMigration": (str, False), "VerifyAuthChallengeResponse": (str, False), } @@ -714,39 +762,3 @@ class UserPoolUserToGroupAttachment(AWSObject): "UserPoolId": (str, True), "Username": (str, True), } - - -class MappingRule(AWSProperty): - """ - `MappingRule `__ - """ - - props: PropsDictType = { - "Claim": (str, True), - "MatchType": (str, True), - "RoleARN": (str, True), - "Value": (str, True), - } - - -class RulesConfiguration(AWSProperty): - """ - `RulesConfiguration `__ - """ - - props: PropsDictType = { - "Rules": ([MappingRule], True), - } - - -class RoleMapping(AWSProperty): - """ - `RoleMapping `__ - """ - - props: PropsDictType = { - "AmbiguousRoleResolution": (str, False), - "IdentityProvider": (str, False), - "RulesConfiguration": (RulesConfiguration, False), - "Type": (str, True), - } diff --git a/troposphere/config.py b/troposphere/config.py index a1384f05a..9bf32c9e1 100644 --- a/troposphere/config.py +++ b/troposphere/config.py @@ -195,6 +195,29 @@ class RecordingGroup(AWSProperty): } +class RecordingModeOverride(AWSProperty): + """ + `RecordingModeOverride `__ + """ + + props: PropsDictType = { + "Description": (str, False), + "RecordingFrequency": (str, True), + "ResourceTypes": ([str], True), + } + + +class RecordingMode(AWSProperty): + """ + `RecordingMode `__ + """ + + props: PropsDictType = { + "RecordingFrequency": (str, True), + "RecordingModeOverrides": ([RecordingModeOverride], False), + } + + class ConfigurationRecorder(AWSObject): """ `ConfigurationRecorder `__ @@ -205,6 +228,7 @@ class ConfigurationRecorder(AWSObject): props: PropsDictType = { "Name": (str, False), "RecordingGroup": (RecordingGroup, False), + "RecordingMode": (RecordingMode, False), "RoleARN": (str, True), } diff --git a/troposphere/connect.py b/troposphere/connect.py index 324c67137..35ceda4e3 100644 --- a/troposphere/connect.py +++ b/troposphere/connect.py @@ -126,6 +126,7 @@ class Instance(AWSObject): "DirectoryId": (str, False), "IdentityManagementType": (str, True), "InstanceAlias": (str, False), + "Tags": (Tags, False), } @@ -166,7 +167,7 @@ class KinesisVideoStreamConfig(AWSProperty): """ props: PropsDictType = { - "EncryptionConfig": (EncryptionConfig, False), + "EncryptionConfig": (EncryptionConfig, True), "Prefix": (str, True), "RetentionPeriodHours": (double, True), } @@ -224,12 +225,37 @@ class PhoneNumber(AWSObject): resource_type = "AWS::Connect::PhoneNumber" props: PropsDictType = { - "CountryCode": (str, True), + "CountryCode": (str, False), "Description": (str, False), "Prefix": (str, False), + "SourcePhoneNumberArn": (str, False), "Tags": (Tags, False), "TargetArn": (str, True), - "Type": (str, True), + "Type": (str, False), + } + + +class Values(AWSProperty): + """ + `Values `__ + """ + + props: PropsDictType = { + "StringList": ([str], False), + } + + +class PredefinedAttribute(AWSObject): + """ + `PredefinedAttribute `__ + """ + + resource_type = "AWS::Connect::PredefinedAttribute" + + props: PropsDictType = { + "InstanceArn": (str, True), + "Name": (str, True), + "Values": (Values, True), } @@ -406,6 +432,40 @@ class RoutingProfile(AWSObject): } +class FieldIdentifier(AWSProperty): + """ + `FieldIdentifier `__ + """ + + props: PropsDictType = { + "Name": (str, True), + } + + +class Field(AWSProperty): + """ + `Field `__ + """ + + props: PropsDictType = { + "Description": (str, False), + "Id": (FieldIdentifier, True), + "SingleSelectOptions": ([str], False), + "Type": (str, True), + } + + +class CreateCaseAction(AWSProperty): + """ + `CreateCaseAction `__ + """ + + props: PropsDictType = { + "Fields": ([Field], True), + "TemplateId": (str, True), + } + + class EventBridgeAction(AWSProperty): """ `EventBridgeAction `__ @@ -465,6 +525,16 @@ class TaskAction(AWSProperty): } +class UpdateCaseAction(AWSProperty): + """ + `UpdateCaseAction `__ + """ + + props: PropsDictType = { + "Fields": ([Field], True), + } + + class Actions(AWSProperty): """ `Actions `__ @@ -472,9 +542,12 @@ class Actions(AWSProperty): props: PropsDictType = { "AssignContactCategoryActions": (Tags, False), + "CreateCaseActions": ([CreateCaseAction], False), + "EndAssociatedTasksActions": (Tags, False), "EventBridgeActions": ([EventBridgeAction], False), "SendNotificationActions": ([SendNotificationAction], False), "TaskActions": ([TaskAction], False), + "UpdateCaseActions": ([UpdateCaseAction], False), } @@ -538,16 +611,6 @@ class SecurityProfile(AWSObject): } -class FieldIdentifier(AWSProperty): - """ - `FieldIdentifier `__ - """ - - props: PropsDictType = { - "Name": (str, True), - } - - class InvisibleFieldInfo(AWSProperty): """ `InvisibleFieldInfo `__ @@ -601,19 +664,6 @@ class DefaultFieldValue(AWSProperty): } -class Field(AWSProperty): - """ - `Field `__ - """ - - props: PropsDictType = { - "Description": (str, False), - "Id": (FieldIdentifier, True), - "SingleSelectOptions": ([str], False), - "Type": (str, True), - } - - class TaskTemplate(AWSObject): """ `TaskTemplate `__ @@ -677,6 +727,18 @@ class UserPhoneConfig(AWSProperty): } +class UserProficiency(AWSProperty): + """ + `UserProficiency `__ + """ + + props: PropsDictType = { + "AttributeName": (str, True), + "AttributeValue": (str, True), + "Level": (double, True), + } + + class User(AWSObject): """ `User `__ @@ -694,6 +756,7 @@ class User(AWSObject): "RoutingProfileArn": (str, True), "SecurityProfileArns": ([str], True), "Tags": (Tags, False), + "UserProficiencies": ([UserProficiency], False), "Username": (str, True), } @@ -742,3 +805,16 @@ class ViewVersion(AWSObject): "ViewArn": (str, True), "ViewContentSha256": (str, False), } + + +class FieldValue(AWSProperty): + """ + `FieldValue `__ + """ + + props: PropsDictType = { + "BooleanValue": (boolean, False), + "DoubleValue": (double, False), + "EmptyValue": (dict, False), + "StringValue": (str, False), + } diff --git a/troposphere/controltower.py b/troposphere/controltower.py index 8346b0556..35ed6699f 100644 --- a/troposphere/controltower.py +++ b/troposphere/controltower.py @@ -6,7 +6,45 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, PropsDictType +from . import AWSObject, AWSProperty, PropsDictType, Tags + + +class Parameter(AWSProperty): + """ + `Parameter `__ + """ + + props: PropsDictType = { + "Key": (str, False), + "Value": (dict, False), + } + + +class EnabledBaseline(AWSObject): + """ + `EnabledBaseline `__ + """ + + resource_type = "AWS::ControlTower::EnabledBaseline" + + props: PropsDictType = { + "BaselineIdentifier": (str, True), + "BaselineVersion": (str, True), + "Parameters": ([Parameter], False), + "Tags": (Tags, False), + "TargetIdentifier": (str, True), + } + + +class EnabledControlParameter(AWSProperty): + """ + `EnabledControlParameter `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (dict, True), + } class EnabledControl(AWSObject): @@ -18,5 +56,21 @@ class EnabledControl(AWSObject): props: PropsDictType = { "ControlIdentifier": (str, True), + "Parameters": ([EnabledControlParameter], False), + "Tags": (Tags, False), "TargetIdentifier": (str, True), } + + +class LandingZone(AWSObject): + """ + `LandingZone `__ + """ + + resource_type = "AWS::ControlTower::LandingZone" + + props: PropsDictType = { + "Manifest": (dict, True), + "Tags": (Tags, False), + "Version": (str, True), + } diff --git a/troposphere/customerprofiles.py b/troposphere/customerprofiles.py index 058b77874..a361450f6 100644 --- a/troposphere/customerprofiles.py +++ b/troposphere/customerprofiles.py @@ -213,7 +213,7 @@ class Domain(AWSObject): props: PropsDictType = { "DeadLetterQueueUrl": (str, False), "DefaultEncryptionKey": (str, False), - "DefaultExpirationDays": (integer, False), + "DefaultExpirationDays": (integer, True), "DomainName": (str, True), "Matching": (Matching, False), "RuleBasedMatching": (RuleBasedMatching, False), @@ -499,13 +499,13 @@ class ObjectType(AWSObject): props: PropsDictType = { "AllowProfileCreation": (boolean, False), - "Description": (str, False), + "Description": (str, True), "DomainName": (str, True), "EncryptionKey": (str, False), "ExpirationDays": (integer, False), "Fields": ([FieldMap], False), "Keys": ([KeyMap], False), - "ObjectTypeName": (str, False), + "ObjectTypeName": (str, True), "SourceLastUpdatedTimestampFormat": (str, False), "Tags": (Tags, False), "TemplateId": (str, False), diff --git a/troposphere/dlm.py b/troposphere/dlm.py index bd1e4929d..396534577 100644 --- a/troposphere/dlm.py +++ b/troposphere/dlm.py @@ -16,6 +16,18 @@ ) +class Exclusions(AWSProperty): + """ + `Exclusions `__ + """ + + props: PropsDictType = { + "ExcludeBootVolumes": (boolean, False), + "ExcludeTags": ([], False), + "ExcludeVolumeTypes": ([], False), + } + + class CrossRegionCopyRetainRule(AWSProperty): """ `CrossRegionCopyRetainRule `__ @@ -128,6 +140,21 @@ class ArchiveRule(AWSProperty): } +class Script(AWSProperty): + """ + `Script `__ + """ + + props: PropsDictType = { + "ExecuteOperationOnScriptFailure": (boolean, False), + "ExecutionHandler": (str, False), + "ExecutionHandlerService": (str, False), + "ExecutionTimeout": (integer, False), + "MaximumRetryCount": (integer, False), + "Stages": ([str], False), + } + + class CreateRule(AWSProperty): """ `CreateRule `__ @@ -138,6 +165,7 @@ class CreateRule(AWSProperty): "Interval": (validate_interval, False), "IntervalUnit": (validate_interval_unit, False), "Location": (str, False), + "Scripts": ([Script], False), "Times": ([str], False), } @@ -245,11 +273,19 @@ class PolicyDetails(AWSProperty): props: PropsDictType = { "Actions": ([Action], False), + "CopyTags": (boolean, False), + "CreateInterval": (integer, False), + "CrossRegionCopyTargets": ([], False), "EventSource": (EventSource, False), + "Exclusions": (Exclusions, False), + "ExtendDeletion": (boolean, False), "Parameters": (Parameters, False), + "PolicyLanguage": (str, False), "PolicyType": (str, False), "ResourceLocations": ([str], False), + "ResourceType": (str, False), "ResourceTypes": ([str], False), + "RetainInterval": (integer, False), "Schedules": ([Schedule], False), "TargetTags": (validate_tags_or_list, False), } @@ -263,9 +299,26 @@ class LifecyclePolicy(AWSObject): resource_type = "AWS::DLM::LifecyclePolicy" props: PropsDictType = { + "CopyTags": (boolean, False), + "CreateInterval": (integer, False), + "CrossRegionCopyTargets": ([], False), + "DefaultPolicy": (str, False), "Description": (str, False), + "Exclusions": (Exclusions, False), "ExecutionRoleArn": (str, False), + "ExtendDeletion": (boolean, False), "PolicyDetails": (PolicyDetails, False), + "RetainInterval": (integer, False), "State": (validate_state, False), "Tags": (validate_tags_or_list, False), } + + +class CrossRegionCopyTarget(AWSProperty): + """ + `CrossRegionCopyTarget `__ + """ + + props: PropsDictType = { + "TargetRegion": (str, False), + } diff --git a/troposphere/dms.py b/troposphere/dms.py index 4b5ecac2f..9db769b13 100644 --- a/troposphere/dms.py +++ b/troposphere/dms.py @@ -28,6 +28,150 @@ class Certificate(AWSObject): } +class MicrosoftSqlServerSettings(AWSProperty): + """ + `MicrosoftSqlServerSettings `__ + """ + + props: PropsDictType = { + "BcpPacketSize": (integer, False), + "ControlTablesFileGroup": (str, False), + "DatabaseName": (str, False), + "ForceLobLookup": (boolean, False), + "Password": (str, False), + "Port": (integer, False), + "QuerySingleAlwaysOnNode": (boolean, False), + "ReadBackupOnly": (boolean, False), + "SafeguardPolicy": (str, False), + "SecretsManagerAccessRoleArn": (str, False), + "SecretsManagerSecretId": (str, False), + "ServerName": (str, False), + "TlogAccessMode": (str, False), + "TrimSpaceInChar": (boolean, False), + "UseBcpFullLoad": (boolean, False), + "UseThirdPartyBackupDevice": (boolean, False), + "Username": (str, False), + } + + +class MySqlSettings(AWSProperty): + """ + `MySqlSettings `__ + """ + + props: PropsDictType = { + "AfterConnectScript": (str, False), + "CleanSourceMetadataOnMismatch": (boolean, False), + "EventsPollInterval": (integer, False), + "MaxFileSize": (integer, False), + "ParallelLoadThreads": (integer, False), + "SecretsManagerAccessRoleArn": (str, False), + "SecretsManagerSecretId": (str, False), + "ServerTimezone": (str, False), + "TargetDbType": (str, False), + } + + +class OracleSettings(AWSProperty): + """ + `OracleSettings `__ + """ + + props: PropsDictType = { + "AccessAlternateDirectly": (boolean, False), + "AddSupplementalLogging": (boolean, False), + "AdditionalArchivedLogDestId": (integer, False), + "AllowSelectNestedTables": (boolean, False), + "ArchivedLogDestId": (integer, False), + "ArchivedLogsOnly": (boolean, False), + "AsmPassword": (str, False), + "AsmServer": (str, False), + "AsmUser": (str, False), + "CharLengthSemantics": (str, False), + "DirectPathNoLog": (boolean, False), + "DirectPathParallelLoad": (boolean, False), + "EnableHomogenousTablespace": (boolean, False), + "ExtraArchivedLogDestIds": ([integer], False), + "FailTasksOnLobTruncation": (boolean, False), + "NumberDatatypeScale": (integer, False), + "OraclePathPrefix": (str, False), + "ParallelAsmReadThreads": (integer, False), + "ReadAheadBlocks": (integer, False), + "ReadTableSpaceName": (boolean, False), + "ReplacePathPrefix": (boolean, False), + "RetryInterval": (integer, False), + "SecretsManagerAccessRoleArn": (str, False), + "SecretsManagerOracleAsmAccessRoleArn": (str, False), + "SecretsManagerOracleAsmSecretId": (str, False), + "SecretsManagerSecretId": (str, False), + "SecurityDbEncryption": (str, False), + "SecurityDbEncryptionName": (str, False), + "SpatialDataOptionToGeoJsonFunctionName": (str, False), + "StandbyDelayTime": (integer, False), + "UseAlternateFolderForOnline": (boolean, False), + "UseBFile": (boolean, False), + "UseDirectPathFullLoad": (boolean, False), + "UseLogminerReader": (boolean, False), + "UsePathPrefix": (str, False), + } + + +class PostgreSqlSettings(AWSProperty): + """ + `PostgreSqlSettings `__ + """ + + props: PropsDictType = { + "AfterConnectScript": (str, False), + "BabelfishDatabaseName": (str, False), + "CaptureDdls": (boolean, False), + "DatabaseMode": (str, False), + "DdlArtifactsSchema": (str, False), + "ExecuteTimeout": (integer, False), + "FailTasksOnLobTruncation": (boolean, False), + "HeartbeatEnable": (boolean, False), + "HeartbeatFrequency": (integer, False), + "HeartbeatSchema": (str, False), + "MapBooleanAsBoolean": (boolean, False), + "MaxFileSize": (integer, False), + "PluginName": (str, False), + "SecretsManagerAccessRoleArn": (str, False), + "SecretsManagerSecretId": (str, False), + "SlotName": (str, False), + } + + +class Settings(AWSProperty): + """ + `Settings `__ + """ + + props: PropsDictType = { + "MicrosoftSqlServerSettings": (MicrosoftSqlServerSettings, False), + "MySqlSettings": (MySqlSettings, False), + "OracleSettings": (OracleSettings, False), + "PostgreSqlSettings": (PostgreSqlSettings, False), + } + + +class DataProvider(AWSObject): + """ + `DataProvider `__ + """ + + resource_type = "AWS::DMS::DataProvider" + + props: PropsDictType = { + "DataProviderIdentifier": (str, False), + "DataProviderName": (str, False), + "Description": (str, False), + "Engine": (str, True), + "ExactSettings": (boolean, False), + "Settings": (Settings, False), + "Tags": (Tags, False), + } + + class DocDbSettings(AWSProperty): """ `DocDbSettings `__ @@ -94,10 +238,14 @@ class IbmDb2Settings(AWSProperty): props: PropsDictType = { "CurrentLsn": (str, False), + "KeepCsvFiles": (boolean, False), + "LoadTimeout": (integer, False), + "MaxFileSize": (integer, False), "MaxKBytesPerRead": (integer, False), "SecretsManagerAccessRoleArn": (str, False), "SecretsManagerSecretId": (str, False), "SetDataCaptureChanges": (boolean, False), + "WriteBufferSize": (integer, False), } @@ -147,32 +295,6 @@ class KinesisSettings(AWSProperty): } -class MicrosoftSqlServerSettings(AWSProperty): - """ - `MicrosoftSqlServerSettings `__ - """ - - props: PropsDictType = { - "BcpPacketSize": (integer, False), - "ControlTablesFileGroup": (str, False), - "DatabaseName": (str, False), - "ForceLobLookup": (boolean, False), - "Password": (str, False), - "Port": (integer, False), - "QuerySingleAlwaysOnNode": (boolean, False), - "ReadBackupOnly": (boolean, False), - "SafeguardPolicy": (str, False), - "SecretsManagerAccessRoleArn": (str, False), - "SecretsManagerSecretId": (str, False), - "ServerName": (str, False), - "TlogAccessMode": (str, False), - "TrimSpaceInChar": (boolean, False), - "UseBcpFullLoad": (boolean, False), - "UseThirdPartyBackupDevice": (boolean, False), - "Username": (str, False), - } - - class MongoDbSettings(AWSProperty): """ `MongoDbSettings `__ @@ -195,24 +317,6 @@ class MongoDbSettings(AWSProperty): } -class MySqlSettings(AWSProperty): - """ - `MySqlSettings `__ - """ - - props: PropsDictType = { - "AfterConnectScript": (str, False), - "CleanSourceMetadataOnMismatch": (boolean, False), - "EventsPollInterval": (integer, False), - "MaxFileSize": (integer, False), - "ParallelLoadThreads": (integer, False), - "SecretsManagerAccessRoleArn": (str, False), - "SecretsManagerSecretId": (str, False), - "ServerTimezone": (str, False), - "TargetDbType": (str, False), - } - - class NeptuneSettings(AWSProperty): """ `NeptuneSettings `__ @@ -229,75 +333,6 @@ class NeptuneSettings(AWSProperty): } -class OracleSettings(AWSProperty): - """ - `OracleSettings `__ - """ - - props: PropsDictType = { - "AccessAlternateDirectly": (boolean, False), - "AddSupplementalLogging": (boolean, False), - "AdditionalArchivedLogDestId": (integer, False), - "AllowSelectNestedTables": (boolean, False), - "ArchivedLogDestId": (integer, False), - "ArchivedLogsOnly": (boolean, False), - "AsmPassword": (str, False), - "AsmServer": (str, False), - "AsmUser": (str, False), - "CharLengthSemantics": (str, False), - "DirectPathNoLog": (boolean, False), - "DirectPathParallelLoad": (boolean, False), - "EnableHomogenousTablespace": (boolean, False), - "ExtraArchivedLogDestIds": ([integer], False), - "FailTasksOnLobTruncation": (boolean, False), - "NumberDatatypeScale": (integer, False), - "OraclePathPrefix": (str, False), - "ParallelAsmReadThreads": (integer, False), - "ReadAheadBlocks": (integer, False), - "ReadTableSpaceName": (boolean, False), - "ReplacePathPrefix": (boolean, False), - "RetryInterval": (integer, False), - "SecretsManagerAccessRoleArn": (str, False), - "SecretsManagerOracleAsmAccessRoleArn": (str, False), - "SecretsManagerOracleAsmSecretId": (str, False), - "SecretsManagerSecretId": (str, False), - "SecurityDbEncryption": (str, False), - "SecurityDbEncryptionName": (str, False), - "SpatialDataOptionToGeoJsonFunctionName": (str, False), - "StandbyDelayTime": (integer, False), - "UseAlternateFolderForOnline": (boolean, False), - "UseBFile": (boolean, False), - "UseDirectPathFullLoad": (boolean, False), - "UseLogminerReader": (boolean, False), - "UsePathPrefix": (str, False), - } - - -class PostgreSqlSettings(AWSProperty): - """ - `PostgreSqlSettings `__ - """ - - props: PropsDictType = { - "AfterConnectScript": (str, False), - "BabelfishDatabaseName": (str, False), - "CaptureDdls": (boolean, False), - "DatabaseMode": (str, False), - "DdlArtifactsSchema": (str, False), - "ExecuteTimeout": (integer, False), - "FailTasksOnLobTruncation": (boolean, False), - "HeartbeatEnable": (boolean, False), - "HeartbeatFrequency": (integer, False), - "HeartbeatSchema": (str, False), - "MapBooleanAsBoolean": (boolean, False), - "MaxFileSize": (integer, False), - "PluginName": (str, False), - "SecretsManagerAccessRoleArn": (str, False), - "SecretsManagerSecretId": (str, False), - "SlotName": (str, False), - } - - class RedisSettings(AWSProperty): """ `RedisSettings `__ @@ -356,6 +391,7 @@ class S3Settings(AWSProperty): props: PropsDictType = { "AddColumnName": (boolean, False), + "AddTrailingPaddingCharacter": (boolean, False), "BucketFolder": (str, False), "BucketName": (str, False), "CannedAclForObjects": (str, False), @@ -379,7 +415,9 @@ class S3Settings(AWSProperty): "EnableStatistics": (boolean, False), "EncodingType": (str, False), "EncryptionMode": (str, False), + "ExpectedBucketOwner": (str, False), "ExternalTableDefinition": (str, False), + "GlueCatalogGeneration": (boolean, False), "IgnoreHeaderRows": (integer, False), "IncludeOpForFullLoad": (boolean, False), "MaxFileSize": (integer, False), @@ -467,6 +505,77 @@ class EventSubscription(AWSObject): } +class InstanceProfile(AWSObject): + """ + `InstanceProfile `__ + """ + + resource_type = "AWS::DMS::InstanceProfile" + + props: PropsDictType = { + "AvailabilityZone": (str, False), + "Description": (str, False), + "InstanceProfileIdentifier": (str, False), + "InstanceProfileName": (str, False), + "KmsKeyArn": (str, False), + "NetworkType": (str, False), + "PubliclyAccessible": (boolean, False), + "SubnetGroupIdentifier": (str, False), + "Tags": (Tags, False), + "VpcSecurityGroups": ([str], False), + } + + +class DataProviderDescriptor(AWSProperty): + """ + `DataProviderDescriptor `__ + """ + + props: PropsDictType = { + "DataProviderArn": (str, False), + "DataProviderIdentifier": (str, False), + "DataProviderName": (str, False), + "SecretsManagerAccessRoleArn": (str, False), + "SecretsManagerSecretId": (str, False), + } + + +class SchemaConversionApplicationAttributes(AWSProperty): + """ + `SchemaConversionApplicationAttributes `__ + """ + + props: PropsDictType = { + "S3BucketPath": (str, False), + "S3BucketRoleArn": (str, False), + } + + +class MigrationProject(AWSObject): + """ + `MigrationProject `__ + """ + + resource_type = "AWS::DMS::MigrationProject" + + props: PropsDictType = { + "Description": (str, False), + "InstanceProfileArn": (str, False), + "InstanceProfileIdentifier": (str, False), + "InstanceProfileName": (str, False), + "MigrationProjectIdentifier": (str, False), + "MigrationProjectName": (str, False), + "SchemaConversionApplicationAttributes": ( + SchemaConversionApplicationAttributes, + False, + ), + "SourceDataProviderDescriptors": ([DataProviderDescriptor], False), + "Tags": (Tags, False), + "TargetDataProviderDescriptors": ([DataProviderDescriptor], False), + "TransformationRules": (str, False), + } + + class ComputeConfig(AWSProperty): """ `ComputeConfig `__ diff --git a/troposphere/docdb.py b/troposphere/docdb.py index 1fb2d7936..a170fb655 100644 --- a/troposphere/docdb.py +++ b/troposphere/docdb.py @@ -38,6 +38,7 @@ class DBCluster(AWSObject): "SnapshotIdentifier": (str, False), "SourceDBClusterIdentifier": (str, False), "StorageEncrypted": (boolean, False), + "StorageType": (str, False), "Tags": (Tags, False), "UseLatestRestorableTime": (boolean, False), "VpcSecurityGroupIds": ([str], False), @@ -70,6 +71,8 @@ class DBInstance(AWSObject): props: PropsDictType = { "AutoMinorVersionUpgrade": (boolean, False), "AvailabilityZone": (str, False), + "CACertificateIdentifier": (str, False), + "CertificateRotationRestart": (boolean, False), "DBClusterIdentifier": (str, True), "DBInstanceClass": (str, True), "DBInstanceIdentifier": (str, False), @@ -92,3 +95,20 @@ class DBSubnetGroup(AWSObject): "SubnetIds": ([str], True), "Tags": (Tags, False), } + + +class EventSubscription(AWSObject): + """ + `EventSubscription `__ + """ + + resource_type = "AWS::DocDB::EventSubscription" + + props: PropsDictType = { + "Enabled": (boolean, False), + "EventCategories": ([str], False), + "SnsTopicArn": (str, True), + "SourceIds": ([str], False), + "SourceType": (str, False), + "SubscriptionName": (str, False), + } diff --git a/troposphere/dynamodb.py b/troposphere/dynamodb.py index 1b34da7ec..b3f76ea79 100644 --- a/troposphere/dynamodb.py +++ b/troposphere/dynamodb.py @@ -145,6 +145,7 @@ class KinesisStreamSpecification(AWSProperty): """ props: PropsDictType = { + "ApproximateCreationDateTimePrecision": (str, False), "StreamArn": (str, True), } diff --git a/troposphere/ec2.py b/troposphere/ec2.py index 14cc289a0..cf7a56100 100644 --- a/troposphere/ec2.py +++ b/troposphere/ec2.py @@ -423,6 +423,7 @@ class InstanceRequirementsRequest(AWSProperty): "InstanceGenerations": ([str], False), "LocalStorage": (str, False), "LocalStorageTypes": ([str], False), + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": (integer, False), "MemoryGiBPerVCpu": (MemoryGiBPerVCpuRequest, False), "MemoryMiB": (MemoryMiBRequest, False), "NetworkBandwidthGbps": (NetworkBandwidthGbpsRequest, False), @@ -738,6 +739,7 @@ class IPAM(AWSObject): "Description": (str, False), "OperatingRegions": ([IpamOperatingRegion], False), "Tags": (Tags, False), + "Tier": (str, False), } @@ -766,6 +768,19 @@ class ProvisionedCidr(AWSProperty): } +class SourceResource(AWSProperty): + """ + `SourceResource `__ + """ + + props: PropsDictType = { + "ResourceId": (str, True), + "ResourceOwner": (str, True), + "ResourceRegion": (str, True), + "ResourceType": (str, True), + } + + class IPAMPool(AWSObject): """ `IPAMPool `__ @@ -788,6 +803,7 @@ class IPAMPool(AWSObject): "PublicIpSource": (str, False), "PubliclyAdvertisable": (boolean, False), "SourceIpamPoolId": (str, False), + "SourceResource": (SourceResource, False), "Tags": (Tags, False), } @@ -1312,6 +1328,7 @@ class InstanceRequirements(AWSProperty): "InstanceGenerations": ([str], False), "LocalStorage": (str, False), "LocalStorageTypes": ([str], False), + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": (integer, False), "MemoryGiBPerVCpu": (MemoryGiBPerVCpu, False), "MemoryMiB": (MemoryMiB, False), "NetworkBandwidthGbps": (NetworkBandwidthGbps, False), @@ -1365,6 +1382,7 @@ class MaintenanceOptions(AWSProperty): props: PropsDictType = { "AutoRecovery": (str, False), + "RebootMigration": (str, False), } @@ -1392,6 +1410,39 @@ class Monitoring(AWSProperty): } +class ConnectionTrackingSpecification(AWSProperty): + """ + `ConnectionTrackingSpecification `__ + """ + + props: PropsDictType = { + "TcpEstablishedTimeout": (integer, False), + "UdpStreamTimeout": (integer, False), + "UdpTimeout": (integer, False), + } + + +class EnaSrdUdpSpecification(AWSProperty): + """ + `EnaSrdUdpSpecification `__ + """ + + props: PropsDictType = { + "EnaSrdUdpEnabled": (boolean, False), + } + + +class EnaSrdSpecification(AWSProperty): + """ + `EnaSrdSpecification `__ + """ + + props: PropsDictType = { + "EnaSrdEnabled": (boolean, False), + "EnaSrdUdpSpecification": (EnaSrdUdpSpecification, False), + } + + class Ipv4PrefixSpecification(AWSProperty): """ `Ipv4PrefixSpecification `__ @@ -1430,9 +1481,11 @@ class NetworkInterfaces(AWSProperty): props: PropsDictType = { "AssociateCarrierIpAddress": (boolean, False), "AssociatePublicIpAddress": (boolean, False), + "ConnectionTrackingSpecification": (ConnectionTrackingSpecification, False), "DeleteOnTermination": (boolean, False), "Description": (str, False), "DeviceIndex": (integer, False), + "EnaSrdSpecification": (EnaSrdSpecification, False), "Groups": ([str], False), "InterfaceType": (str, False), "Ipv4PrefixCount": (integer, False), @@ -1798,6 +1851,7 @@ class NetworkInterface(AWSObject): resource_type = "AWS::EC2::NetworkInterface" props: PropsDictType = { + "ConnectionTrackingSpecification": (ConnectionTrackingSpecification, False), "Description": (str, False), "GroupSet": ([str], False), "InterfaceType": (str, False), @@ -1826,6 +1880,7 @@ class NetworkInterfaceAttachment(AWSObject): props: PropsDictType = { "DeleteOnTermination": (boolean, False), "DeviceIndex": (validate_int_to_str, True), + "EnaSrdSpecification": (EnaSrdSpecification, False), "InstanceId": (str, True), "NetworkInterfaceId": (str, True), } @@ -1896,7 +1951,7 @@ class PrefixList(AWSObject): props: PropsDictType = { "AddressFamily": (str, True), "Entries": ([Entry], False), - "MaxEntries": (integer, True), + "MaxEntries": (integer, False), "PrefixListName": (str, True), "Tags": (Tags, False), } @@ -1911,6 +1966,7 @@ class Route(AWSObject): props: PropsDictType = { "CarrierGatewayId": (str, False), + "CoreNetworkArn": (str, False), "DestinationCidrBlock": (str, False), "DestinationIpv6CidrBlock": (str, False), "DestinationPrefixListId": (str, False), @@ -1962,7 +2018,7 @@ class SecurityGroup(AWSObject): class SecurityGroupEgress(AWSObject): """ - `SecurityGroupEgress `__ + `SecurityGroupEgress `__ """ resource_type = "AWS::EC2::SecurityGroupEgress" @@ -1985,7 +2041,7 @@ def validate(self): class SecurityGroupIngress(AWSObject): """ - `SecurityGroupIngress `__ + `SecurityGroupIngress `__ """ resource_type = "AWS::EC2::SecurityGroupIngress" @@ -2009,6 +2065,18 @@ def validate(self): validate_security_group_ingress(self) +class SnapshotBlockPublicAccess(AWSObject): + """ + `SnapshotBlockPublicAccess `__ + """ + + resource_type = "AWS::EC2::SnapshotBlockPublicAccess" + + props: PropsDictType = { + "State": (str, True), + } + + class IamInstanceProfileSpecification(AWSProperty): """ `IamInstanceProfileSpecification `__ @@ -2282,8 +2350,13 @@ class Subnet(AWSObject): "AvailabilityZoneId": (str, False), "CidrBlock": (str, False), "EnableDns64": (boolean, False), + "Ipv4IpamPoolId": (str, False), + "Ipv4NetmaskLength": (integer, False), "Ipv6CidrBlock": (str, False), + "Ipv6CidrBlocks": ([str], False), + "Ipv6IpamPoolId": (str, False), "Ipv6Native": (boolean, False), + "Ipv6NetmaskLength": (integer, False), "MapPublicIpOnLaunch": (boolean, False), "OutpostArn": (str, False), "PrivateDnsNameOptionsOnLaunch": (PrivateDnsNameOptionsOnLaunch, False), @@ -2303,14 +2376,16 @@ class SubnetCidrBlock(AWSObject): resource_type = "AWS::EC2::SubnetCidrBlock" props: PropsDictType = { - "Ipv6CidrBlock": (str, True), + "Ipv6CidrBlock": (str, False), + "Ipv6IpamPoolId": (str, False), + "Ipv6NetmaskLength": (integer, False), "SubnetId": (str, True), } class SubnetNetworkAclAssociation(AWSObject): """ - `SubnetNetworkAclAssociation `__ + `SubnetNetworkAclAssociation `__ """ resource_type = "AWS::EC2::SubnetNetworkAclAssociation" @@ -2762,7 +2837,7 @@ class VPCEndpointServicePermissions(AWSObject): class VPCGatewayAttachment(AWSObject): """ - `VPCGatewayAttachment `__ + `VPCGatewayAttachment `__ """ resource_type = "AWS::EC2::VPCGatewayAttachment" @@ -3027,6 +3102,7 @@ class DeviceOptions(AWSProperty): """ props: PropsDictType = { + "PublicSigningKeyUrl": (str, False), "TenantId": (str, False), } diff --git a/troposphere/ecr.py b/troposphere/ecr.py index 9b95c3638..5b48a3138 100644 --- a/troposphere/ecr.py +++ b/troposphere/ecr.py @@ -48,7 +48,9 @@ class PullThroughCacheRule(AWSObject): resource_type = "AWS::ECR::PullThroughCacheRule" props: PropsDictType = { + "CredentialArn": (str, False), "EcrRepositoryPrefix": (str, False), + "UpstreamRegistry": (str, False), "UpstreamRegistryUrl": (str, False), } diff --git a/troposphere/ecs.py b/troposphere/ecs.py index b6531ba20..b813bc70f 100644 --- a/troposphere/ecs.py +++ b/troposphere/ecs.py @@ -51,6 +51,7 @@ class AutoScalingGroupProvider(AWSProperty): props: PropsDictType = { "AutoScalingGroupArn": (str, True), + "ManagedDraining": (str, False), "ManagedScaling": (ManagedScaling, False), "ManagedTerminationProtection": (str, False), } @@ -333,6 +334,39 @@ class ServiceConnectClientAlias(AWSProperty): } +class ServiceConnectTlsCertificateAuthority(AWSProperty): + """ + `ServiceConnectTlsCertificateAuthority `__ + """ + + props: PropsDictType = { + "AwsPcaAuthorityArn": (str, False), + } + + +class ServiceConnectTlsConfiguration(AWSProperty): + """ + `ServiceConnectTlsConfiguration `__ + """ + + props: PropsDictType = { + "IssuerCertificateAuthority": (ServiceConnectTlsCertificateAuthority, True), + "KmsKey": (str, False), + "RoleArn": (str, False), + } + + +class TimeoutConfiguration(AWSProperty): + """ + `TimeoutConfiguration `__ + """ + + props: PropsDictType = { + "IdleTimeoutSeconds": (integer, False), + "PerRequestTimeoutSeconds": (integer, False), + } + + class ServiceConnectService(AWSProperty): """ `ServiceConnectService `__ @@ -343,6 +377,8 @@ class ServiceConnectService(AWSProperty): "DiscoveryName": (str, False), "IngressPortOverride": (integer, False), "PortName": (str, True), + "Timeout": (TimeoutConfiguration, False), + "Tls": (ServiceConnectTlsConfiguration, False), } @@ -372,6 +408,48 @@ class ServiceRegistry(AWSProperty): } +class EBSTagSpecification(AWSProperty): + """ + `EBSTagSpecification `__ + """ + + props: PropsDictType = { + "PropagateTags": (str, False), + "ResourceType": (str, True), + "Tags": (Tags, False), + } + + +class ServiceManagedEBSVolumeConfiguration(AWSProperty): + """ + `ServiceManagedEBSVolumeConfiguration `__ + """ + + props: PropsDictType = { + "Encrypted": (boolean, False), + "FilesystemType": (str, False), + "Iops": (integer, False), + "KmsKeyId": (str, False), + "RoleArn": (str, True), + "SizeInGiB": (integer, False), + "SnapshotId": (str, False), + "TagSpecifications": ([EBSTagSpecification], False), + "Throughput": (integer, False), + "VolumeType": (str, False), + } + + +class ServiceVolumeConfiguration(AWSProperty): + """ + `ServiceVolumeConfiguration `__ + """ + + props: PropsDictType = { + "ManagedEBSVolume": (ServiceManagedEBSVolumeConfiguration, False), + "Name": (str, True), + } + + class Service(AWSObject): """ `Service `__ @@ -402,6 +480,7 @@ class Service(AWSObject): "ServiceRegistries": ([ServiceRegistry], False), "Tags": (Tags, False), "TaskDefinition": (str, False), + "VolumeConfigurations": ([ServiceVolumeConfiguration], False), } @@ -615,6 +694,7 @@ class ContainerDefinition(AWSProperty): props: PropsDictType = { "Command": ([str], False), "Cpu": (integer, False), + "CredentialSpecs": ([str], False), "DependsOn": ([ContainerDependency], False), "DisableNetworking": (boolean, False), "DnsSearchDomains": ([str], False), @@ -757,6 +837,7 @@ class Volume(AWSProperty): """ props: PropsDictType = { + "ConfiguredAtLaunch": (boolean, False), "DockerVolumeConfiguration": (DockerVolumeConfiguration, False), "EFSVolumeConfiguration": (EFSVolumeConfiguration, False), "Host": (Host, False), @@ -820,5 +901,6 @@ class TaskSet(AWSObject): "Scale": (Scale, False), "Service": (str, True), "ServiceRegistries": ([ServiceRegistry], False), + "Tags": (Tags, False), "TaskDefinition": (str, True), } diff --git a/troposphere/efs.py b/troposphere/efs.py index 94d3ac47c..85d36bfad 100644 --- a/troposphere/efs.py +++ b/troposphere/efs.py @@ -82,12 +82,23 @@ def validate(self): validate_backup_policy(self) +class FileSystemProtection(AWSProperty): + """ + `FileSystemProtection `__ + """ + + props: PropsDictType = { + "ReplicationOverwriteProtection": (str, False), + } + + class LifecyclePolicy(AWSProperty): """ `LifecyclePolicy `__ """ props: PropsDictType = { + "TransitionToArchive": (str, False), "TransitionToIA": (str, False), "TransitionToPrimaryStorageClass": (str, False), } @@ -129,6 +140,7 @@ class FileSystem(AWSObject): "BypassPolicyLockoutSafetyCheck": (boolean, False), "Encrypted": (boolean, False), "FileSystemPolicy": (dict, False), + "FileSystemProtection": (FileSystemProtection, False), "FileSystemTags": (Tags, False), "KmsKeyId": (str, False), "LifecyclePolicies": ([LifecyclePolicy], False), diff --git a/troposphere/eks.py b/troposphere/eks.py index eb3d264e3..1b0f96d88 100644 --- a/troposphere/eks.py +++ b/troposphere/eks.py @@ -17,6 +17,46 @@ ) +class AccessScope(AWSProperty): + """ + `AccessScope `__ + """ + + props: PropsDictType = { + "Namespaces": ([str], False), + "Type": (str, True), + } + + +class AccessPolicy(AWSProperty): + """ + `AccessPolicy `__ + """ + + props: PropsDictType = { + "AccessScope": (AccessScope, True), + "PolicyArn": (str, True), + } + + +class AccessEntry(AWSObject): + """ + `AccessEntry `__ + """ + + resource_type = "AWS::EKS::AccessEntry" + + props: PropsDictType = { + "AccessPolicies": ([AccessPolicy], False), + "ClusterName": (str, True), + "KubernetesGroups": ([str], False), + "PrincipalArn": (str, True), + "Tags": (Tags, False), + "Type": (str, False), + "Username": (str, False), + } + + class Addon(AWSObject): """ `Addon `__ @@ -36,6 +76,17 @@ class Addon(AWSObject): } +class AccessConfig(AWSProperty): + """ + `AccessConfig `__ + """ + + props: PropsDictType = { + "AuthenticationMode": (str, False), + "BootstrapClusterCreatorAdminPermissions": (boolean, False), + } + + class Provider(AWSProperty): """ `Provider `__ @@ -146,6 +197,7 @@ class Cluster(AWSObject): resource_type = "AWS::EKS::Cluster" props: PropsDictType = { + "AccessConfig": (AccessConfig, False), "EncryptionConfig": ([EncryptionConfig], False), "KubernetesNetworkConfig": (KubernetesNetworkConfig, False), "Logging": (Logging, False), @@ -325,3 +377,19 @@ class Nodegroup(AWSObject): "UpdateConfig": (UpdateConfig, False), "Version": (str, False), } + + +class PodIdentityAssociation(AWSObject): + """ + `PodIdentityAssociation `__ + """ + + resource_type = "AWS::EKS::PodIdentityAssociation" + + props: PropsDictType = { + "ClusterName": (str, True), + "Namespace": (str, True), + "RoleArn": (str, True), + "ServiceAccount": (str, True), + "Tags": (Tags, False), + } diff --git a/troposphere/elasticache.py b/troposphere/elasticache.py index 1f2930d55..0802a364c 100644 --- a/troposphere/elasticache.py +++ b/troposphere/elasticache.py @@ -263,6 +263,76 @@ class SecurityGroupIngress(AWSObject): } +class DataStorage(AWSProperty): + """ + `DataStorage `__ + """ + + props: PropsDictType = { + "Maximum": (integer, True), + "Unit": (str, True), + } + + +class ECPUPerSecond(AWSProperty): + """ + `ECPUPerSecond `__ + """ + + props: PropsDictType = { + "Maximum": (integer, True), + } + + +class CacheUsageLimits(AWSProperty): + """ + `CacheUsageLimits `__ + """ + + props: PropsDictType = { + "DataStorage": (DataStorage, False), + "ECPUPerSecond": (ECPUPerSecond, False), + } + + +class Endpoint(AWSProperty): + """ + `Endpoint `__ + """ + + props: PropsDictType = { + "Address": (str, False), + "Port": (str, False), + } + + +class ServerlessCache(AWSObject): + """ + `ServerlessCache `__ + """ + + resource_type = "AWS::ElastiCache::ServerlessCache" + + props: PropsDictType = { + "CacheUsageLimits": (CacheUsageLimits, False), + "DailySnapshotTime": (str, False), + "Description": (str, False), + "Endpoint": (Endpoint, False), + "Engine": (str, True), + "FinalSnapshotName": (str, False), + "KmsKeyId": (str, False), + "MajorEngineVersion": (str, False), + "ReaderEndpoint": (Endpoint, False), + "SecurityGroupIds": ([str], False), + "ServerlessCacheName": (str, True), + "SnapshotArnsToRestore": ([str], False), + "SnapshotRetentionLimit": (integer, False), + "SubnetIds": ([str], False), + "Tags": (Tags, False), + "UserGroupId": (str, False), + } + + class SubnetGroup(AWSObject): """ `SubnetGroup `__ diff --git a/troposphere/elasticloadbalancingv2.py b/troposphere/elasticloadbalancingv2.py index ba5e22501..0fed0270f 100644 --- a/troposphere/elasticloadbalancingv2.py +++ b/troposphere/elasticloadbalancingv2.py @@ -6,7 +6,7 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, AWSProperty, PropsDictType +from . import AWSObject, AWSProperty, PropsDictType, Tags from .validators import boolean, integer from .validators.elasticloadbalancingv2 import TARGET_TYPE_ALB # noqa: F401 from .validators.elasticloadbalancingv2 import TARGET_TYPE_INSTANCE # noqa: F401 @@ -160,6 +160,18 @@ class Certificate(AWSProperty): } +class MutualAuthentication(AWSProperty): + """ + `MutualAuthentication `__ + """ + + props: PropsDictType = { + "IgnoreClientCertificateExpiry": (boolean, False), + "Mode": (str, False), + "TrustStoreArn": (str, False), + } + + class Listener(AWSObject): """ `Listener `__ @@ -172,6 +184,7 @@ class Listener(AWSObject): "Certificates": ([Certificate], False), "DefaultActions": ([Action], True), "LoadBalancerArn": (str, True), + "MutualAuthentication": (MutualAuthentication, False), "Port": (validate_network_port, False), "Protocol": (str, False), "SslPolicy": (str, False), @@ -365,6 +378,7 @@ class LoadBalancer(AWSObject): resource_type = "AWS::ElasticLoadBalancingV2::LoadBalancer" props: PropsDictType = { + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": (str, False), "IpAddressType": (str, False), "LoadBalancerAttributes": ([LoadBalancerAttributes], False), "Name": (validate_elb_name, False), @@ -445,3 +459,58 @@ class TargetGroup(AWSObject): def validate(self): validate_target_group(self) + + +class TrustStore(AWSObject): + """ + `TrustStore `__ + """ + + resource_type = "AWS::ElasticLoadBalancingV2::TrustStore" + + props: PropsDictType = { + "CaCertificatesBundleS3Bucket": (str, False), + "CaCertificatesBundleS3Key": (str, False), + "CaCertificatesBundleS3ObjectVersion": (str, False), + "Name": (str, False), + "Tags": (Tags, False), + } + + +class RevocationContent(AWSProperty): + """ + `RevocationContent `__ + """ + + props: PropsDictType = { + "RevocationType": (str, False), + "S3Bucket": (str, False), + "S3Key": (str, False), + "S3ObjectVersion": (str, False), + } + + +class TrustStoreRevocation(AWSObject): + """ + `TrustStoreRevocation `__ + """ + + resource_type = "AWS::ElasticLoadBalancingV2::TrustStoreRevocation" + + props: PropsDictType = { + "RevocationContents": ([RevocationContent], False), + "TrustStoreArn": (str, False), + } + + +class TrustStoreRevocationProperty(AWSProperty): + """ + `TrustStoreRevocationProperty `__ + """ + + props: PropsDictType = { + "NumberOfRevokedEntries": (integer, False), + "RevocationId": (str, False), + "RevocationType": (str, False), + "TrustStoreArn": (str, False), + } diff --git a/troposphere/emr.py b/troposphere/emr.py index 1a6bf9a90..f009f13e9 100644 --- a/troposphere/emr.py +++ b/troposphere/emr.py @@ -331,6 +331,7 @@ class JobFlowInstancesConfig(AWSProperty): "TaskInstanceGroup": ([InstanceGroupConfigProperty], False), "TaskInstanceGroups": ([InstanceGroupConfigProperty], False), "TerminationProtected": (boolean, False), + "UnhealthyNodeReplacement": (boolean, False), } @@ -372,6 +373,17 @@ class ManagedScalingPolicy(AWSProperty): } +class PlacementGroupConfig(AWSProperty): + """ + `PlacementGroupConfig `__ + """ + + props: PropsDictType = { + "InstanceRole": (str, True), + "PlacementStrategy": (str, False), + } + + class HadoopJarStepConfig(AWSProperty): """ `HadoopJarStepConfig `__ @@ -412,7 +424,9 @@ class Cluster(AWSObject): "BootstrapActions": ([BootstrapActionConfig], False), "Configurations": ([Configuration], False), "CustomAmiId": (str, False), + "EbsRootVolumeIops": (integer, False), "EbsRootVolumeSize": (integer, False), + "EbsRootVolumeThroughput": (integer, False), "Instances": (JobFlowInstancesConfig, True), "JobFlowRole": (str, True), "KerberosAttributes": (KerberosAttributes, False), @@ -421,6 +435,7 @@ class Cluster(AWSObject): "ManagedScalingPolicy": (ManagedScalingPolicy, False), "Name": (str, True), "OSReleaseLabel": (str, False), + "PlacementGroupConfigs": ([PlacementGroupConfig], False), "ReleaseLabel": (str, False), "ScaleDownBehavior": (str, False), "SecurityConfiguration": (str, False), @@ -511,13 +526,17 @@ class Studio(AWSObject): "AuthMode": (str, True), "DefaultS3Location": (str, True), "Description": (str, False), + "EncryptionKeyArn": (str, False), "EngineSecurityGroupId": (str, True), + "IdcInstanceArn": (str, False), + "IdcUserAssignment": (str, False), "IdpAuthUrl": (str, False), "IdpRelayStateParameterName": (str, False), "Name": (str, True), "ServiceRole": (str, True), "SubnetIds": ([str], True), "Tags": (Tags, False), + "TrustedIdentityPropagationEnabled": (boolean, False), "UserRole": (str, False), "VpcId": (str, True), "WorkspaceSecurityGroupId": (str, True), diff --git a/troposphere/emrserverless.py b/troposphere/emrserverless.py index d73b1dfb3..6d101ed1c 100644 --- a/troposphere/emrserverless.py +++ b/troposphere/emrserverless.py @@ -31,6 +31,18 @@ class AutoStopConfiguration(AWSProperty): } +class ConfigurationObject(AWSProperty): + """ + `ConfigurationObject `__ + """ + + props: PropsDictType = { + "Classification": (str, True), + "Configurations": ([ConfigurationObject], False), + "Properties": (dict, False), + } + + class ImageConfigurationInput(AWSProperty): """ `ImageConfigurationInput `__ @@ -87,6 +99,68 @@ class MaximumAllowedResources(AWSProperty): } +class LogTypeMapKeyValuePair(AWSProperty): + """ + `LogTypeMapKeyValuePair `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": ([str], True), + } + + +class CloudWatchLoggingConfiguration(AWSProperty): + """ + `CloudWatchLoggingConfiguration `__ + """ + + props: PropsDictType = { + "Enabled": (boolean, False), + "EncryptionKeyArn": (str, False), + "LogGroupName": (str, False), + "LogStreamNamePrefix": (str, False), + "LogTypeMap": ([LogTypeMapKeyValuePair], False), + } + + +class ManagedPersistenceMonitoringConfiguration(AWSProperty): + """ + `ManagedPersistenceMonitoringConfiguration `__ + """ + + props: PropsDictType = { + "Enabled": (boolean, False), + "EncryptionKeyArn": (str, False), + } + + +class S3MonitoringConfiguration(AWSProperty): + """ + `S3MonitoringConfiguration `__ + """ + + props: PropsDictType = { + "EncryptionKeyArn": (str, False), + "LogUri": (str, False), + } + + +class MonitoringConfiguration(AWSProperty): + """ + `MonitoringConfiguration `__ + """ + + props: PropsDictType = { + "CloudWatchLoggingConfiguration": (CloudWatchLoggingConfiguration, False), + "ManagedPersistenceMonitoringConfiguration": ( + ManagedPersistenceMonitoringConfiguration, + False, + ), + "S3MonitoringConfiguration": (S3MonitoringConfiguration, False), + } + + class NetworkConfiguration(AWSProperty): """ `NetworkConfiguration `__ @@ -122,9 +196,11 @@ class Application(AWSObject): "ImageConfiguration": (ImageConfigurationInput, False), "InitialCapacity": ([InitialCapacityConfigKeyValuePair], False), "MaximumCapacity": (MaximumAllowedResources, False), + "MonitoringConfiguration": (MonitoringConfiguration, False), "Name": (str, False), "NetworkConfiguration": (NetworkConfiguration, False), "ReleaseLabel": (str, True), + "RuntimeConfiguration": ([ConfigurationObject], False), "Tags": (Tags, False), "Type": (str, True), "WorkerTypeSpecifications": (dict, False), diff --git a/troposphere/events.py b/troposphere/events.py index 2fb8dc612..ba51fbc2b 100644 --- a/troposphere/events.py +++ b/troposphere/events.py @@ -263,6 +263,16 @@ class EventBusPolicy(AWSObject): } +class AppSyncParameters(AWSProperty): + """ + `AppSyncParameters `__ + """ + + props: PropsDictType = { + "GraphQLOperation": (str, True), + } + + class BatchArrayProperties(AWSProperty): """ `BatchArrayProperties `__ @@ -503,6 +513,7 @@ class Target(AWSProperty): """ props: PropsDictType = { + "AppSyncParameters": (AppSyncParameters, False), "Arn": (str, True), "BatchParameters": (BatchParameters, False), "DeadLetterConfig": (DeadLetterConfig, False), diff --git a/troposphere/firehose.py b/troposphere/firehose.py index f0cee8aaa..6f6e107e1 100644 --- a/troposphere/firehose.py +++ b/troposphere/firehose.py @@ -425,10 +425,12 @@ class ExtendedS3DestinationConfiguration(AWSProperty): "BufferingHints": (BufferingHints, False), "CloudWatchLoggingOptions": (CloudWatchLoggingOptions, False), "CompressionFormat": (str, False), + "CustomTimeZone": (str, False), "DataFormatConversionConfiguration": (DataFormatConversionConfiguration, False), "DynamicPartitioningConfiguration": (DynamicPartitioningConfiguration, False), "EncryptionConfiguration": (EncryptionConfiguration, False), "ErrorOutputPrefix": (str, False), + "FileExtension": (str, False), "Prefix": (str, False), "ProcessingConfiguration": (ProcessingConfiguration, False), "RoleARN": (str, True), @@ -565,6 +567,75 @@ class RedshiftDestinationConfiguration(AWSProperty): } +class SnowflakeRetryOptions(AWSProperty): + """ + `SnowflakeRetryOptions `__ + """ + + props: PropsDictType = { + "DurationInSeconds": (integer, False), + } + + +class SnowflakeRoleConfiguration(AWSProperty): + """ + `SnowflakeRoleConfiguration `__ + """ + + props: PropsDictType = { + "Enabled": (boolean, False), + "SnowflakeRole": (str, False), + } + + +class SnowflakeVpcConfiguration(AWSProperty): + """ + `SnowflakeVpcConfiguration `__ + """ + + props: PropsDictType = { + "PrivateLinkVpceId": (str, True), + } + + +class SnowflakeDestinationConfiguration(AWSProperty): + """ + `SnowflakeDestinationConfiguration `__ + """ + + props: PropsDictType = { + "AccountUrl": (str, True), + "CloudWatchLoggingOptions": (CloudWatchLoggingOptions, False), + "ContentColumnName": (str, False), + "DataLoadingOption": (str, False), + "Database": (str, True), + "KeyPassphrase": (str, False), + "MetaDataColumnName": (str, False), + "PrivateKey": (str, True), + "ProcessingConfiguration": (ProcessingConfiguration, False), + "RetryOptions": (SnowflakeRetryOptions, False), + "RoleARN": (str, True), + "S3BackupMode": (str, False), + "S3Configuration": (S3DestinationConfiguration, True), + "Schema": (str, True), + "SnowflakeRoleConfiguration": (SnowflakeRoleConfiguration, False), + "SnowflakeVpcConfiguration": (SnowflakeVpcConfiguration, False), + "Table": (str, True), + "User": (str, True), + } + + +class SplunkBufferingHints(AWSProperty): + """ + `SplunkBufferingHints `__ + """ + + props: PropsDictType = { + "IntervalInSeconds": (integer, False), + "SizeInMBs": (integer, False), + } + + class SplunkRetryOptions(AWSProperty): """ `SplunkRetryOptions `__ @@ -581,6 +652,7 @@ class SplunkDestinationConfiguration(AWSProperty): """ props: PropsDictType = { + "BufferingHints": (SplunkBufferingHints, False), "CloudWatchLoggingOptions": (CloudWatchLoggingOptions, False), "HECAcknowledgmentTimeoutInSeconds": (integer, False), "HECEndpoint": (str, True), @@ -631,6 +703,7 @@ class DeliveryStream(AWSObject): "MSKSourceConfiguration": (MSKSourceConfiguration, False), "RedshiftDestinationConfiguration": (RedshiftDestinationConfiguration, False), "S3DestinationConfiguration": (S3DestinationConfiguration, False), + "SnowflakeDestinationConfiguration": (SnowflakeDestinationConfiguration, False), "SplunkDestinationConfiguration": (SplunkDestinationConfiguration, False), "Tags": (Tags, False), } diff --git a/troposphere/fis.py b/troposphere/fis.py index 77eea93c5..6c38e7f87 100644 --- a/troposphere/fis.py +++ b/troposphere/fis.py @@ -24,6 +24,17 @@ class ExperimentTemplateAction(AWSProperty): } +class ExperimentTemplateExperimentOptions(AWSProperty): + """ + `ExperimentTemplateExperimentOptions `__ + """ + + props: PropsDictType = { + "AccountTargeting": (str, False), + "EmptyTargetResolutionMode": (str, False), + } + + class CloudWatchLogsConfiguration(AWSProperty): """ `CloudWatchLogsConfiguration `__ @@ -104,9 +115,25 @@ class ExperimentTemplate(AWSObject): props: PropsDictType = { "Actions": (dict, False), "Description": (str, True), + "ExperimentOptions": (ExperimentTemplateExperimentOptions, False), "LogConfiguration": (ExperimentTemplateLogConfiguration, False), "RoleArn": (str, True), "StopConditions": ([ExperimentTemplateStopCondition], True), "Tags": (dict, True), "Targets": (dict, True), } + + +class TargetAccountConfiguration(AWSObject): + """ + `TargetAccountConfiguration `__ + """ + + resource_type = "AWS::FIS::TargetAccountConfiguration" + + props: PropsDictType = { + "AccountId": (str, True), + "Description": (str, False), + "ExperimentTemplateId": (str, True), + "RoleArn": (str, True), + } diff --git a/troposphere/fsx.py b/troposphere/fsx.py index 2521f7495..3d02d62d9 100644 --- a/troposphere/fsx.py +++ b/troposphere/fsx.py @@ -115,9 +115,11 @@ class OntapConfiguration(AWSProperty): "DiskIopsConfiguration": (DiskIopsConfiguration, False), "EndpointIpAddressRange": (str, False), "FsxAdminPassword": (str, False), + "HAPairs": (integer, False), "PreferredSubnetId": (str, False), "RouteTableIds": ([str], False), "ThroughputCapacity": (integer, False), + "ThroughputCapacityPerHAPair": (integer, False), "WeeklyMaintenanceStartTime": (str, False), } @@ -312,6 +314,17 @@ class StorageVirtualMachine(AWSObject): } +class AggregateConfiguration(AWSProperty): + """ + `AggregateConfiguration `__ + """ + + props: PropsDictType = { + "Aggregates": ([str], False), + "ConstituentsPerAggregate": (integer, False), + } + + class AutocommitPeriod(AWSProperty): """ `AutocommitPeriod `__ @@ -378,16 +391,19 @@ class VolumeOntapConfiguration(AWSProperty): """ props: PropsDictType = { + "AggregateConfiguration": (AggregateConfiguration, False), "CopyTagsToBackups": (str, False), "JunctionPath": (str, False), "OntapVolumeType": (str, False), "SecurityStyle": (str, False), - "SizeInMegabytes": (str, True), + "SizeInBytes": (str, False), + "SizeInMegabytes": (str, False), "SnaplockConfiguration": (SnaplockConfiguration, False), "SnapshotPolicy": (str, False), "StorageEfficiencyEnabled": (str, False), "StorageVirtualMachineId": (str, True), "TieringPolicy": (TieringPolicy, False), + "VolumeStyle": (str, False), } diff --git a/troposphere/gamelift.py b/troposphere/gamelift.py index 9fc6ee71d..d4c654afb 100644 --- a/troposphere/gamelift.py +++ b/troposphere/gamelift.py @@ -156,6 +156,37 @@ class RuntimeConfiguration(AWSProperty): } +class TargetConfiguration(AWSProperty): + """ + `TargetConfiguration `__ + """ + + props: PropsDictType = { + "TargetValue": (double, True), + } + + +class ScalingPolicy(AWSProperty): + """ + `ScalingPolicy `__ + """ + + props: PropsDictType = { + "ComparisonOperator": (str, False), + "EvaluationPeriods": (integer, False), + "Location": (str, False), + "MetricName": (str, True), + "Name": (str, True), + "PolicyType": (str, False), + "ScalingAdjustment": (integer, False), + "ScalingAdjustmentType": (str, False), + "Status": (str, False), + "TargetConfiguration": (TargetConfiguration, False), + "Threshold": (double, False), + "UpdateStatus": (str, False), + } + + class Fleet(AWSObject): """ `Fleet `__ @@ -165,6 +196,7 @@ class Fleet(AWSObject): props: PropsDictType = { "AnywhereConfiguration": (AnywhereConfiguration, False), + "ApplyCapacity": (str, False), "BuildId": (str, False), "CertificateConfiguration": (CertificateConfiguration, False), "ComputeType": (str, False), @@ -185,6 +217,7 @@ class Fleet(AWSObject): "PeerVpcId": (str, False), "ResourceCreationLimitPolicy": (ResourceCreationLimitPolicy, False), "RuntimeConfiguration": (RuntimeConfiguration, False), + "ScalingPolicies": ([ScalingPolicy], False), "ScriptId": (str, False), } @@ -256,23 +289,23 @@ class GameServerGroup(AWSObject): } -class Destination(AWSProperty): +class FilterConfiguration(AWSProperty): """ - `Destination `__ + `FilterConfiguration `__ """ props: PropsDictType = { - "DestinationArn": (str, False), + "AllowedLocations": ([str], False), } -class FilterConfiguration(AWSProperty): +class GameSessionQueueDestination(AWSProperty): """ - `FilterConfiguration `__ + `GameSessionQueueDestination `__ """ props: PropsDictType = { - "AllowedLocations": ([str], False), + "DestinationArn": (str, False), } @@ -307,7 +340,7 @@ class GameSessionQueue(AWSObject): props: PropsDictType = { "CustomEventData": (str, False), - "Destinations": ([Destination], False), + "Destinations": ([GameSessionQueueDestination], False), "FilterConfiguration": (FilterConfiguration, False), "Name": (str, True), "NotificationTarget": (str, False), @@ -354,6 +387,7 @@ class MatchmakingConfiguration(AWSObject): "AcceptanceTimeoutSeconds": (integer, False), "AdditionalPlayerCount": (integer, False), "BackfillMode": (str, False), + "CreationTime": (str, False), "CustomEventData": (str, False), "Description": (str, False), "FlexMatchMode": (str, False), @@ -363,6 +397,7 @@ class MatchmakingConfiguration(AWSObject): "Name": (str, True), "NotificationTarget": (str, False), "RequestTimeoutSeconds": (integer, True), + "RuleSetArn": (str, False), "RuleSetName": (str, True), "Tags": (Tags, False), } diff --git a/troposphere/globalaccelerator.py b/troposphere/globalaccelerator.py index 481c42799..6e85c54b2 100644 --- a/troposphere/globalaccelerator.py +++ b/troposphere/globalaccelerator.py @@ -38,6 +38,7 @@ class EndpointConfiguration(AWSProperty): """ props: PropsDictType = { + "AttachmentArn": (str, False), "ClientIPPreservationEnabled": (boolean, False), "EndpointId": (str, True), "Weight": (integer, False), diff --git a/troposphere/glue.py b/troposphere/glue.py index 528dcdf74..55dc9f616 100644 --- a/troposphere/glue.py +++ b/troposphere/glue.py @@ -286,6 +286,21 @@ class Crawler(AWSObject): } +class CustomEntityType(AWSObject): + """ + `CustomEntityType `__ + """ + + resource_type = "AWS::Glue::CustomEntityType" + + props: PropsDictType = { + "ContextWords": ([str], False), + "Name": (str, False), + "RegexString": (str, False), + "Tags": (dict, False), + } + + class ConnectionPasswordEncryption(AWSProperty): """ `ConnectionPasswordEncryption `__ @@ -304,6 +319,7 @@ class EncryptionAtRest(AWSProperty): props: PropsDictType = { "CatalogEncryptionMode": (str, False), + "CatalogEncryptionServiceRole": (str, False), "SseAwsKmsKeyId": (str, False), } @@ -967,6 +983,33 @@ class Table(AWSObject): } +class TableOptimizerConfiguration(AWSProperty): + """ + `TableOptimizerConfiguration `__ + """ + + props: PropsDictType = { + "Enabled": (boolean, True), + "RoleArn": (str, True), + } + + +class TableOptimizer(AWSObject): + """ + `TableOptimizer `__ + """ + + resource_type = "AWS::Glue::TableOptimizer" + + props: PropsDictType = { + "CatalogId": (str, True), + "DatabaseName": (str, True), + "TableName": (str, True), + "TableOptimizerConfiguration": (TableOptimizerConfiguration, True), + "Type": (str, True), + } + + class Action(AWSProperty): """ `Action `__ diff --git a/troposphere/grafana.py b/troposphere/grafana.py index 96ed76733..9626aa72e 100644 --- a/troposphere/grafana.py +++ b/troposphere/grafana.py @@ -7,7 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType -from .validators import double +from .validators import boolean, double class NetworkAccessControl(AWSProperty): @@ -103,6 +103,7 @@ class Workspace(AWSObject): "OrganizationRoleName": (str, False), "OrganizationalUnits": ([str], False), "PermissionType": (str, True), + "PluginAdminEnabled": (boolean, False), "RoleArn": (str, False), "SamlConfiguration": (SamlConfiguration, False), "StackSetName": (str, False), diff --git a/troposphere/guardduty.py b/troposphere/guardduty.py index 0fca7cb01..62ef1a912 100644 --- a/troposphere/guardduty.py +++ b/troposphere/guardduty.py @@ -6,7 +6,7 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, AWSProperty, PropsDictType, Tags +from . import AWSObject, AWSProperty, PropsDictType from .validators import boolean, integer @@ -100,7 +100,7 @@ class CFNFeatureConfiguration(AWSProperty): class TagItem(AWSProperty): """ - `TagItem `__ + `TagItem `__ """ props: PropsDictType = { @@ -153,7 +153,6 @@ class FindingCriteria(AWSProperty): props: PropsDictType = { "Criterion": (dict, False), - "ItemType": (Condition, False), } @@ -165,13 +164,13 @@ class Filter(AWSObject): resource_type = "AWS::GuardDuty::Filter" props: PropsDictType = { - "Action": (str, True), - "Description": (str, True), - "DetectorId": (str, True), + "Action": (str, False), + "Description": (str, False), + "DetectorId": (str, False), "FindingCriteria": (FindingCriteria, True), - "Name": (str, True), - "Rank": (integer, True), - "Tags": (Tags, False), + "Name": (str, False), + "Rank": (integer, False), + "Tags": ([TagItem], False), } @@ -183,12 +182,12 @@ class IPSet(AWSObject): resource_type = "AWS::GuardDuty::IPSet" props: PropsDictType = { - "Activate": (boolean, True), - "DetectorId": (str, True), + "Activate": (boolean, False), + "DetectorId": (str, False), "Format": (str, True), "Location": (str, True), "Name": (str, False), - "Tags": (Tags, False), + "Tags": ([TagItem], False), } @@ -214,10 +213,10 @@ class Member(AWSObject): resource_type = "AWS::GuardDuty::Member" props: PropsDictType = { - "DetectorId": (str, True), + "DetectorId": (str, False), "DisableEmailNotification": (boolean, False), "Email": (str, True), - "MemberId": (str, True), + "MemberId": (str, False), "Message": (str, False), "Status": (str, False), } @@ -231,10 +230,10 @@ class ThreatIntelSet(AWSObject): resource_type = "AWS::GuardDuty::ThreatIntelSet" props: PropsDictType = { - "Activate": (boolean, True), - "DetectorId": (str, True), + "Activate": (boolean, False), + "DetectorId": (str, False), "Format": (str, True), "Location": (str, True), "Name": (str, False), - "Tags": (Tags, False), + "Tags": ([TagItem], False), } diff --git a/troposphere/iam.py b/troposphere/iam.py index 07bf9fa5e..dff64a782 100644 --- a/troposphere/iam.py +++ b/troposphere/iam.py @@ -37,7 +37,7 @@ class AccessKey(AWSObject): class Policy(AWSProperty): """ - `Policy `__ + `Policy `__ """ props: PropsDictType = { @@ -230,7 +230,7 @@ class LoginProfile(AWSProperty): class User(AWSObject): """ - `User `__ + `User `__ """ resource_type = "AWS::IAM::User" diff --git a/troposphere/imagebuilder.py b/troposphere/imagebuilder.py index d8769a985..5e5fee0cc 100644 --- a/troposphere/imagebuilder.py +++ b/troposphere/imagebuilder.py @@ -291,6 +291,30 @@ class ImageTestsConfiguration(AWSProperty): } +class WorkflowParameter(AWSProperty): + """ + `WorkflowParameter `__ + """ + + props: PropsDictType = { + "Name": (str, False), + "Value": ([str], False), + } + + +class WorkflowConfiguration(AWSProperty): + """ + `WorkflowConfiguration `__ + """ + + props: PropsDictType = { + "OnFailure": (str, False), + "ParallelGroup": (str, False), + "Parameters": ([WorkflowParameter], False), + "WorkflowArn": (str, False), + } + + class Image(AWSObject): """ `Image `__ @@ -302,11 +326,13 @@ class Image(AWSObject): "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), } @@ -336,6 +362,7 @@ class ImagePipeline(AWSObject): "Description": (str, False), "DistributionConfigurationArn": (str, False), "EnhancedImageMetadataEnabled": (boolean, False), + "ExecutionRole": (str, False), "ImageRecipeArn": (str, False), "ImageScanningConfiguration": (ImageScanningConfiguration, False), "ImageTestsConfiguration": (ImageTestsConfiguration, False), @@ -344,6 +371,7 @@ class ImagePipeline(AWSObject): "Schedule": (Schedule, False), "Status": (imagepipeline_status, False), "Tags": (dict, False), + "Workflows": ([WorkflowConfiguration], False), } @@ -453,3 +481,148 @@ class InfrastructureConfiguration(AWSObject): "Tags": (dict, False), "TerminateInstanceOnFailure": (boolean, False), } + + +class IncludeResources(AWSProperty): + """ + `IncludeResources `__ + """ + + props: PropsDictType = { + "Amis": (boolean, False), + "Containers": (boolean, False), + "Snapshots": (boolean, False), + } + + +class Action(AWSProperty): + """ + `Action `__ + """ + + props: PropsDictType = { + "IncludeResources": (IncludeResources, False), + "Type": (str, True), + } + + +class LastLaunched(AWSProperty): + """ + `LastLaunched `__ + """ + + props: PropsDictType = { + "Unit": (str, True), + "Value": (integer, True), + } + + +class AmiExclusionRules(AWSProperty): + """ + `AmiExclusionRules `__ + """ + + props: PropsDictType = { + "IsPublic": (boolean, False), + "LastLaunched": (LastLaunched, False), + "Regions": ([str], False), + "SharedAccounts": ([str], False), + "TagMap": (dict, False), + } + + +class ExclusionRules(AWSProperty): + """ + `ExclusionRules `__ + """ + + props: PropsDictType = { + "Amis": (AmiExclusionRules, False), + "TagMap": (dict, False), + } + + +class Filter(AWSProperty): + """ + `Filter `__ + """ + + props: PropsDictType = { + "RetainAtLeast": (integer, False), + "Type": (str, True), + "Unit": (str, False), + "Value": (integer, True), + } + + +class PolicyDetail(AWSProperty): + """ + `PolicyDetail `__ + """ + + props: PropsDictType = { + "Action": (Action, True), + "ExclusionRules": (ExclusionRules, False), + "Filter": (Filter, True), + } + + +class RecipeSelection(AWSProperty): + """ + `RecipeSelection `__ + """ + + props: PropsDictType = { + "Name": (str, True), + "SemanticVersion": (str, True), + } + + +class ResourceSelection(AWSProperty): + """ + `ResourceSelection `__ + """ + + props: PropsDictType = { + "Recipes": ([RecipeSelection], False), + "TagMap": (dict, False), + } + + +class LifecyclePolicy(AWSObject): + """ + `LifecyclePolicy `__ + """ + + 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), + } + + +class Workflow(AWSObject): + """ + `Workflow `__ + """ + + 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), + } diff --git a/troposphere/inspectorv2.py b/troposphere/inspectorv2.py index 0f2525538..048d0c6f6 100644 --- a/troposphere/inspectorv2.py +++ b/troposphere/inspectorv2.py @@ -10,6 +10,89 @@ from .validators import double, integer +class CisTargets(AWSProperty): + """ + `CisTargets `__ + """ + + props: PropsDictType = { + "AccountIds": ([str], True), + "TargetResourceTags": (dict, False), + } + + +class Time(AWSProperty): + """ + `Time `__ + """ + + props: PropsDictType = { + "TimeOfDay": (str, True), + "TimeZone": (str, True), + } + + +class DailySchedule(AWSProperty): + """ + `DailySchedule `__ + """ + + props: PropsDictType = { + "StartTime": (Time, True), + } + + +class MonthlySchedule(AWSProperty): + """ + `MonthlySchedule `__ + """ + + props: PropsDictType = { + "Day": (str, True), + "StartTime": (Time, True), + } + + +class WeeklySchedule(AWSProperty): + """ + `WeeklySchedule `__ + """ + + props: PropsDictType = { + "Days": ([str], True), + "StartTime": (Time, True), + } + + +class Schedule(AWSProperty): + """ + `Schedule `__ + """ + + props: PropsDictType = { + "Daily": (DailySchedule, False), + "Monthly": (MonthlySchedule, False), + "OneTime": (dict, False), + "Weekly": (WeeklySchedule, False), + } + + +class CisScanConfiguration(AWSObject): + """ + `CisScanConfiguration `__ + """ + + resource_type = "AWS::InspectorV2::CisScanConfiguration" + + props: PropsDictType = { + "ScanName": (str, False), + "Schedule": (Schedule, False), + "SecurityLevel": (str, False), + "Tags": (dict, False), + "Targets": (CisTargets, False), + } + + class DateFilter(AWSProperty): """ `DateFilter `__ diff --git a/troposphere/iot.py b/troposphere/iot.py index dd4aa35c9..d203614da 100644 --- a/troposphere/iot.py +++ b/troposphere/iot.py @@ -188,6 +188,21 @@ class Certificate(AWSObject): } +class CertificateProvider(AWSObject): + """ + `CertificateProvider `__ + """ + + resource_type = "AWS::IoT::CertificateProvider" + + props: PropsDictType = { + "AccountDefaultForOperations": ([str], True), + "CertificateProviderName": (str, False), + "LambdaFunctionArn": (str, True), + "Tags": (Tags, False), + } + + class CustomMetric(AWSObject): """ `CustomMetric `__ @@ -229,6 +244,16 @@ class AuthorizerConfig(AWSProperty): } +class ServerCertificateConfig(AWSProperty): + """ + `ServerCertificateConfig `__ + """ + + props: PropsDictType = { + "EnableOCSPCheck": (boolean, False), + } + + class TlsConfig(AWSProperty): """ `TlsConfig `__ @@ -252,6 +277,7 @@ class DomainConfiguration(AWSObject): "DomainConfigurationStatus": (str, False), "DomainName": (str, False), "ServerCertificateArns": ([str], False), + "ServerCertificateConfig": (ServerCertificateConfig, False), "ServiceType": (str, False), "Tags": (Tags, False), "TlsConfig": (TlsConfig, False), @@ -714,6 +740,7 @@ class Behavior(AWSProperty): props: PropsDictType = { "Criteria": (BehaviorCriteria, False), + "ExportMetric": (boolean, False), "Metric": (str, False), "MetricDimension": (MetricDimension, False), "Name": (str, True), @@ -727,11 +754,23 @@ class MetricToRetain(AWSProperty): """ props: PropsDictType = { + "ExportMetric": (boolean, False), "Metric": (str, True), "MetricDimension": (MetricDimension, False), } +class MetricsExportConfig(AWSProperty): + """ + `MetricsExportConfig `__ + """ + + props: PropsDictType = { + "MqttTopic": (str, True), + "RoleArn": (str, True), + } + + class SecurityProfile(AWSObject): """ `SecurityProfile `__ @@ -743,6 +782,7 @@ class SecurityProfile(AWSObject): "AdditionalMetricsToRetainV2": ([MetricToRetain], False), "AlertTargets": (dict, False), "Behaviors": ([Behavior], False), + "MetricsExportConfig": (MetricsExportConfig, False), "SecurityProfileDescription": (str, False), "SecurityProfileName": (str, False), "Tags": (Tags, False), diff --git a/troposphere/iotsitewise.py b/troposphere/iotsitewise.py index 69cc35f7c..5f236fa03 100644 --- a/troposphere/iotsitewise.py +++ b/troposphere/iotsitewise.py @@ -103,7 +103,9 @@ class AssetHierarchy(AWSProperty): props: PropsDictType = { "ChildAssetId": (str, True), - "LogicalId": (str, True), + "ExternalId": (str, False), + "Id": (str, False), + "LogicalId": (str, False), } @@ -114,7 +116,9 @@ class AssetProperty(AWSProperty): props: PropsDictType = { "Alias": (str, False), - "LogicalId": (str, True), + "ExternalId": (str, False), + "Id": (str, False), + "LogicalId": (str, False), "NotificationState": (str, False), "Unit": (str, False), } @@ -129,6 +133,7 @@ class Asset(AWSObject): props: PropsDictType = { "AssetDescription": (str, False), + "AssetExternalId": (str, False), "AssetHierarchies": ([AssetHierarchy], False), "AssetModelId": (str, True), "AssetName": (str, True), @@ -147,14 +152,29 @@ class Attribute(AWSProperty): } +class PropertyPathDefinition(AWSProperty): + """ + `PropertyPathDefinition `__ + """ + + props: PropsDictType = { + "Name": (str, True), + } + + class VariableValue(AWSProperty): """ `VariableValue `__ """ props: PropsDictType = { + "HierarchyExternalId": (str, False), + "HierarchyId": (str, False), "HierarchyLogicalId": (str, False), - "PropertyLogicalId": (str, True), + "PropertyExternalId": (str, False), + "PropertyId": (str, False), + "PropertyLogicalId": (str, False), + "PropertyPath": ([PropertyPathDefinition], False), } @@ -234,7 +254,9 @@ class AssetModelProperty(AWSProperty): props: PropsDictType = { "DataType": (str, True), "DataTypeSpec": (str, False), - "LogicalId": (str, True), + "ExternalId": (str, False), + "Id": (str, False), + "LogicalId": (str, False), "Name": (str, True), "Type": (PropertyType, True), "Unit": (str, False), @@ -247,9 +269,14 @@ class AssetModelCompositeModel(AWSProperty): """ props: PropsDictType = { + "ComposedAssetModelId": (str, False), "CompositeModelProperties": ([AssetModelProperty], False), "Description": (str, False), + "ExternalId": (str, False), + "Id": (str, False), "Name": (str, True), + "ParentAssetModelCompositeModelExternalId": (str, False), + "Path": ([str], False), "Type": (str, True), } @@ -261,7 +288,9 @@ class AssetModelHierarchy(AWSProperty): props: PropsDictType = { "ChildAssetModelId": (str, True), - "LogicalId": (str, True), + "ExternalId": (str, False), + "Id": (str, False), + "LogicalId": (str, False), "Name": (str, True), } @@ -276,9 +305,11 @@ class AssetModel(AWSObject): props: PropsDictType = { "AssetModelCompositeModels": ([AssetModelCompositeModel], False), "AssetModelDescription": (str, False), + "AssetModelExternalId": (str, False), "AssetModelHierarchies": ([AssetModelHierarchy], False), "AssetModelName": (str, True), "AssetModelProperties": ([AssetModelProperty], False), + "AssetModelType": (str, False), "Tags": (Tags, False), } diff --git a/troposphere/iottwinmaker.py b/troposphere/iottwinmaker.py index 69d2d7d83..76bdde7ec 100644 --- a/troposphere/iottwinmaker.py +++ b/troposphere/iottwinmaker.py @@ -11,6 +11,16 @@ from .validators.iottwinmaker import validate_listvalue, validate_nestedtypel +class CompositeComponentType(AWSProperty): + """ + `CompositeComponentType `__ + """ + + props: PropsDictType = { + "ComponentTypeId": (str, False), + } + + class LambdaFunction(AWSProperty): """ `LambdaFunction `__ @@ -134,6 +144,7 @@ class ComponentType(AWSObject): props: PropsDictType = { "ComponentTypeId": (str, True), + "CompositeComponentTypes": (dict, False), "Description": (str, False), "ExtendsFrom": ([str], False), "Functions": (dict, False), @@ -213,6 +224,22 @@ class Component(AWSProperty): } +class CompositeComponent(AWSProperty): + """ + `CompositeComponent `__ + """ + + props: PropsDictType = { + "ComponentName": (str, False), + "ComponentPath": (str, False), + "ComponentTypeId": (str, False), + "Description": (str, False), + "Properties": (dict, False), + "PropertyGroups": (dict, False), + "Status": (Status, False), + } + + class Entity(AWSObject): """ `Entity `__ @@ -222,6 +249,7 @@ class Entity(AWSObject): props: PropsDictType = { "Components": (dict, False), + "CompositeComponents": (dict, False), "Description": (str, False), "EntityId": (str, False), "EntityName": (str, True), diff --git a/troposphere/iotwireless.py b/troposphere/iotwireless.py index fe5d3d2a9..66129bf34 100644 --- a/troposphere/iotwireless.py +++ b/troposphere/iotwireless.py @@ -362,6 +362,28 @@ class AbpV11(AWSProperty): } +class Application(AWSProperty): + """ + `Application `__ + """ + + props: PropsDictType = { + "DestinationName": (str, False), + "FPort": (integer, False), + "Type": (str, False), + } + + +class FPorts(AWSProperty): + """ + `FPorts `__ + """ + + props: PropsDictType = { + "Applications": ([Application], False), + } + + class OtaaV10x(AWSProperty): """ `OtaaV10x `__ @@ -395,6 +417,7 @@ class LoRaWANDevice(AWSProperty): "AbpV11": (AbpV11, False), "DevEui": (str, False), "DeviceProfileId": (str, False), + "FPorts": (FPorts, False), "OtaaV10x": (OtaaV10x, False), "OtaaV11": (OtaaV11, False), "ServiceProfileId": (str, False), @@ -414,6 +437,7 @@ class WirelessDevice(AWSObject): "LastUplinkReceivedAt": (str, False), "LoRaWAN": (LoRaWANDevice, False), "Name": (str, False), + "Positioning": (str, False), "Tags": (Tags, False), "ThingArn": (str, False), "Type": (str, True), diff --git a/troposphere/ivs.py b/troposphere/ivs.py index a25a1ed4f..6ea4a1f53 100644 --- a/troposphere/ivs.py +++ b/troposphere/ivs.py @@ -104,6 +104,19 @@ class RecordingConfiguration(AWSObject): } +class Stage(AWSObject): + """ + `Stage `__ + """ + + resource_type = "AWS::IVS::Stage" + + props: PropsDictType = { + "Name": (str, False), + "Tags": (Tags, False), + } + + class StreamKey(AWSObject): """ `StreamKey `__ diff --git a/troposphere/lakeformation.py b/troposphere/lakeformation.py index 9c7be22a5..c0606c69e 100644 --- a/troposphere/lakeformation.py +++ b/troposphere/lakeformation.py @@ -257,6 +257,7 @@ class Resource(AWSObject): resource_type = "AWS::LakeFormation::Resource" props: PropsDictType = { + "HybridAccessEnabled": (boolean, False), "ResourceArn": (str, True), "RoleArn": (str, False), "UseServiceLinkedRole": (boolean, True), diff --git a/troposphere/location.py b/troposphere/location.py index 87bdfa9c1..729862e2f 100644 --- a/troposphere/location.py +++ b/troposphere/location.py @@ -6,7 +6,39 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, AWSProperty, PropsDictType +from . import AWSObject, AWSProperty, PropsDictType, Tags +from .validators import boolean + + +class ApiKeyRestrictions(AWSProperty): + """ + `ApiKeyRestrictions `__ + """ + + props: PropsDictType = { + "AllowActions": ([str], True), + "AllowReferers": ([str], False), + "AllowResources": ([str], True), + } + + +class APIKey(AWSObject): + """ + `APIKey `__ + """ + + resource_type = "AWS::Location::APIKey" + + props: PropsDictType = { + "Description": (str, False), + "ExpireTime": (str, False), + "ForceDelete": (boolean, False), + "ForceUpdate": (boolean, False), + "KeyName": (str, True), + "NoExpiry": (boolean, False), + "Restrictions": (ApiKeyRestrictions, True), + "Tags": (Tags, False), + } class GeofenceCollection(AWSObject): @@ -20,6 +52,7 @@ class GeofenceCollection(AWSObject): "CollectionName": (str, True), "Description": (str, False), "KmsKeyId": (str, False), + "Tags": (Tags, False), } @@ -29,6 +62,8 @@ class MapConfiguration(AWSProperty): """ props: PropsDictType = { + "CustomLayers": ([str], False), + "PoliticalView": (str, False), "Style": (str, True), } @@ -45,6 +80,7 @@ class Map(AWSObject): "Description": (str, False), "MapName": (str, True), "PricingPlan": (str, False), + "Tags": (Tags, False), } @@ -71,6 +107,7 @@ class PlaceIndex(AWSObject): "Description": (str, False), "IndexName": (str, True), "PricingPlan": (str, False), + "Tags": (Tags, False), } @@ -86,6 +123,7 @@ class RouteCalculator(AWSObject): "DataSource": (str, True), "Description": (str, False), "PricingPlan": (str, False), + "Tags": (Tags, False), } @@ -98,8 +136,11 @@ class Tracker(AWSObject): props: PropsDictType = { "Description": (str, False), + "EventBridgeEnabled": (boolean, False), + "KmsKeyEnableGeospatialQueries": (boolean, False), "KmsKeyId": (str, False), "PositionFiltering": (str, False), + "Tags": (Tags, False), "TrackerName": (str, True), } diff --git a/troposphere/logs.py b/troposphere/logs.py index cd5e5f5c0..d9feb6c32 100644 --- a/troposphere/logs.py +++ b/troposphere/logs.py @@ -27,6 +27,51 @@ class AccountPolicy(AWSObject): "PolicyName": (str, True), "PolicyType": (str, True), "Scope": (str, False), + "SelectionCriteria": (str, False), + } + + +class Delivery(AWSObject): + """ + `Delivery `__ + """ + + resource_type = "AWS::Logs::Delivery" + + props: PropsDictType = { + "DeliveryDestinationArn": (str, True), + "DeliverySourceName": (str, True), + "Tags": (Tags, False), + } + + +class DeliveryDestination(AWSObject): + """ + `DeliveryDestination `__ + """ + + resource_type = "AWS::Logs::DeliveryDestination" + + props: PropsDictType = { + "DeliveryDestinationPolicy": (dict, False), + "DestinationResourceArn": (str, False), + "Name": (str, True), + "Tags": (Tags, False), + } + + +class DeliverySource(AWSObject): + """ + `DeliverySource `__ + """ + + resource_type = "AWS::Logs::DeliverySource" + + props: PropsDictType = { + "LogType": (str, False), + "Name": (str, True), + "ResourceArn": (str, False), + "Tags": (Tags, False), } @@ -45,6 +90,24 @@ class Destination(AWSObject): } +class LogAnomalyDetector(AWSObject): + """ + `LogAnomalyDetector `__ + """ + + resource_type = "AWS::Logs::LogAnomalyDetector" + + props: PropsDictType = { + "AccountId": (str, False), + "AnomalyVisibilityTime": (double, False), + "DetectorName": (str, False), + "EvaluationFrequency": (str, False), + "FilterPattern": (str, False), + "KmsKeyId": (str, False), + "LogGroupArnList": ([str], False), + } + + class LogGroup(AWSObject): """ `LogGroup `__ @@ -55,6 +118,7 @@ class LogGroup(AWSObject): props: PropsDictType = { "DataProtectionPolicy": (dict, False), "KmsKeyId": (str, False), + "LogGroupClass": (str, False), "LogGroupName": (str, False), "RetentionInDays": (validate_loggroup_retention_in_days, False), "Tags": (Tags, False), diff --git a/troposphere/managedblockchain.py b/troposphere/managedblockchain.py index b79876847..f37cdd1df 100644 --- a/troposphere/managedblockchain.py +++ b/troposphere/managedblockchain.py @@ -19,6 +19,7 @@ class Accessor(AWSObject): props: PropsDictType = { "AccessorType": (str, True), + "NetworkType": (str, False), "Tags": (Tags, False), } diff --git a/troposphere/medialive.py b/troposphere/medialive.py index 6aa025b45..adf063720 100644 --- a/troposphere/medialive.py +++ b/troposphere/medialive.py @@ -6,7 +6,7 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, AWSProperty, PropsDictType +from . import AWSObject, AWSProperty, PropsDictType, Tags from .validators import double, integer @@ -553,6 +553,28 @@ class CaptionDescription(AWSProperty): } +class ColorCorrection(AWSProperty): + """ + `ColorCorrection `__ + """ + + props: PropsDictType = { + "InputColorSpace": (str, False), + "OutputColorSpace": (str, False), + "Uri": (str, False), + } + + +class ColorCorrectionSettings(AWSProperty): + """ + `ColorCorrectionSettings `__ + """ + + props: PropsDictType = { + "GlobalColorCorrections": ([ColorCorrection], False), + } + + class FeatureActivations(AWSProperty): """ `FeatureActivations `__ @@ -560,6 +582,7 @@ class FeatureActivations(AWSProperty): props: PropsDictType = { "InputPrepareScheduleActions": (str, False), + "OutputStaticImageOverlayScheduleActions": (str, False), } @@ -577,6 +600,36 @@ class InputLossBehavior(AWSProperty): } +class EpochLockingSettings(AWSProperty): + """ + `EpochLockingSettings `__ + """ + + props: PropsDictType = { + "CustomEpoch": (str, False), + "JamSyncTime": (str, False), + } + + +class PipelineLockingSettings(AWSProperty): + """ + `PipelineLockingSettings `__ + """ + + props: PropsDictType = {} + + +class OutputLockingSettings(AWSProperty): + """ + `OutputLockingSettings `__ + """ + + props: PropsDictType = { + "EpochLockingSettings": (EpochLockingSettings, False), + "PipelineLockingSettings": (PipelineLockingSettings, False), + } + + class GlobalConfiguration(AWSProperty): """ `GlobalConfiguration `__ @@ -587,6 +640,7 @@ class GlobalConfiguration(AWSProperty): "InputEndAction": (str, False), "InputLossBehavior": (InputLossBehavior, False), "OutputLockingMode": (str, False), + "OutputLockingSettings": (OutputLockingSettings, False), "OutputTimingSource": (str, False), "SupportLowFramerateInputs": (str, False), } @@ -1625,6 +1679,7 @@ class EncoderSettings(AWSProperty): "AvailConfiguration": (AvailConfiguration, False), "BlackoutSlate": (BlackoutSlate, False), "CaptionDescriptions": ([CaptionDescription], False), + "ColorCorrectionSettings": (ColorCorrectionSettings, False), "FeatureActivations": (FeatureActivations, False), "GlobalConfiguration": (GlobalConfiguration, False), "MotionGraphicsConfiguration": (MotionGraphicsConfiguration, False), @@ -2220,6 +2275,156 @@ class InputSecurityGroup(AWSObject): } +class MultiplexMediaConnectOutputDestinationSettings(AWSProperty): + """ + `MultiplexMediaConnectOutputDestinationSettings `__ + """ + + props: PropsDictType = { + "EntitlementArn": (str, False), + } + + +class MultiplexOutputDestination(AWSProperty): + """ + `MultiplexOutputDestination `__ + """ + + props: PropsDictType = { + "MultiplexMediaConnectOutputDestinationSettings": ( + MultiplexMediaConnectOutputDestinationSettings, + False, + ), + } + + +class MultiplexSettings(AWSProperty): + """ + `MultiplexSettings `__ + """ + + props: PropsDictType = { + "MaximumVideoBufferDelayMilliseconds": (integer, False), + "TransportStreamBitrate": (integer, True), + "TransportStreamId": (integer, True), + "TransportStreamReservedBitrate": (integer, False), + } + + +class Multiplex(AWSObject): + """ + `Multiplex `__ + """ + + resource_type = "AWS::MediaLive::Multiplex" + + props: PropsDictType = { + "AvailabilityZones": ([str], True), + "Destinations": ([MultiplexOutputDestination], False), + "MultiplexSettings": (MultiplexSettings, True), + "Name": (str, True), + "Tags": (Tags, False), + } + + +class MultiplexProgramPacketIdentifiersMap(AWSProperty): + """ + `MultiplexProgramPacketIdentifiersMap `__ + """ + + props: PropsDictType = { + "AudioPids": ([integer], False), + "DvbSubPids": ([integer], False), + "DvbTeletextPid": (integer, False), + "EtvPlatformPid": (integer, False), + "EtvSignalPid": (integer, False), + "KlvDataPids": ([integer], False), + "PcrPid": (integer, False), + "PmtPid": (integer, False), + "PrivateMetadataPid": (integer, False), + "Scte27Pids": ([integer], False), + "Scte35Pid": (integer, False), + "TimedMetadataPid": (integer, False), + "VideoPid": (integer, False), + } + + +class MultiplexProgramPipelineDetail(AWSProperty): + """ + `MultiplexProgramPipelineDetail `__ + """ + + props: PropsDictType = { + "ActiveChannelPipeline": (str, False), + "PipelineId": (str, False), + } + + +class MultiplexProgramServiceDescriptor(AWSProperty): + """ + `MultiplexProgramServiceDescriptor `__ + """ + + props: PropsDictType = { + "ProviderName": (str, True), + "ServiceName": (str, True), + } + + +class MultiplexStatmuxVideoSettings(AWSProperty): + """ + `MultiplexStatmuxVideoSettings `__ + """ + + props: PropsDictType = { + "MaximumBitrate": (integer, False), + "MinimumBitrate": (integer, False), + "Priority": (integer, False), + } + + +class MultiplexVideoSettings(AWSProperty): + """ + `MultiplexVideoSettings `__ + """ + + props: PropsDictType = { + "ConstantBitrate": (integer, False), + "StatmuxSettings": (MultiplexStatmuxVideoSettings, False), + } + + +class MultiplexProgramSettings(AWSProperty): + """ + `MultiplexProgramSettings `__ + """ + + props: PropsDictType = { + "PreferredChannelPipeline": (str, False), + "ProgramNumber": (integer, True), + "ServiceDescriptor": (MultiplexProgramServiceDescriptor, False), + "VideoSettings": (MultiplexVideoSettings, False), + } + + +class Multiplexprogram(AWSObject): + """ + `Multiplexprogram `__ + """ + + resource_type = "AWS::MediaLive::Multiplexprogram" + + props: PropsDictType = { + "ChannelId": (str, False), + "MultiplexId": (str, False), + "MultiplexProgramSettings": (MultiplexProgramSettings, False), + "PacketIdentifiersMap": (MultiplexProgramPacketIdentifiersMap, False), + "PipelineDetails": ([MultiplexProgramPipelineDetail], False), + "PreferredChannelPipeline": (str, False), + "ProgramName": (str, False), + } + + class InputDeviceRequest(AWSProperty): """ `InputDeviceRequest `__ diff --git a/troposphere/mediapackagev2.py b/troposphere/mediapackagev2.py index 05404b560..1bec11914 100644 --- a/troposphere/mediapackagev2.py +++ b/troposphere/mediapackagev2.py @@ -18,8 +18,8 @@ class Channel(AWSObject): resource_type = "AWS::MediaPackageV2::Channel" props: PropsDictType = { - "ChannelGroupName": (str, False), - "ChannelName": (str, False), + "ChannelGroupName": (str, True), + "ChannelName": (str, True), "Description": (str, False), "Tags": (Tags, False), } @@ -33,7 +33,7 @@ class ChannelGroup(AWSObject): resource_type = "AWS::MediaPackageV2::ChannelGroup" props: PropsDictType = { - "ChannelGroupName": (str, False), + "ChannelGroupName": (str, True), "Description": (str, False), "Tags": (Tags, False), } @@ -47,12 +47,25 @@ class ChannelPolicy(AWSObject): resource_type = "AWS::MediaPackageV2::ChannelPolicy" props: PropsDictType = { - "ChannelGroupName": (str, False), - "ChannelName": (str, False), + "ChannelGroupName": (str, True), + "ChannelName": (str, True), "Policy": (dict, True), } +class FilterConfiguration(AWSProperty): + """ + `FilterConfiguration `__ + """ + + props: PropsDictType = { + "End": (str, False), + "ManifestFilter": (str, False), + "Start": (str, False), + "TimeDelaySeconds": (integer, False), + } + + class ScteHls(AWSProperty): """ `ScteHls `__ @@ -70,6 +83,7 @@ class HlsManifestConfiguration(AWSProperty): props: PropsDictType = { "ChildManifestName": (str, False), + "FilterConfiguration": (FilterConfiguration, False), "ManifestName": (str, True), "ManifestWindowSeconds": (integer, False), "ProgramDateTimeIntervalSeconds": (integer, False), @@ -85,6 +99,7 @@ class LowLatencyHlsManifestConfiguration(AWSProperty): props: PropsDictType = { "ChildManifestName": (str, False), + "FilterConfiguration": (FilterConfiguration, False), "ManifestName": (str, True), "ManifestWindowSeconds": (integer, False), "ProgramDateTimeIntervalSeconds": (integer, False), @@ -176,13 +191,13 @@ class OriginEndpoint(AWSObject): resource_type = "AWS::MediaPackageV2::OriginEndpoint" props: PropsDictType = { - "ChannelGroupName": (str, False), - "ChannelName": (str, False), - "ContainerType": (str, True), + "ChannelGroupName": (str, True), + "ChannelName": (str, True), + "ContainerType": (str, False), "Description": (str, False), "HlsManifests": ([HlsManifestConfiguration], False), "LowLatencyHlsManifests": ([LowLatencyHlsManifestConfiguration], False), - "OriginEndpointName": (str, False), + "OriginEndpointName": (str, True), "Segment": (Segment, False), "StartoverWindowSeconds": (integer, False), "Tags": (Tags, False), @@ -197,9 +212,9 @@ class OriginEndpointPolicy(AWSObject): resource_type = "AWS::MediaPackageV2::OriginEndpointPolicy" props: PropsDictType = { - "ChannelGroupName": (str, False), - "ChannelName": (str, False), - "OriginEndpointName": (str, False), + "ChannelGroupName": (str, True), + "ChannelName": (str, True), + "OriginEndpointName": (str, True), "Policy": (dict, True), } diff --git a/troposphere/mediatailor.py b/troposphere/mediatailor.py index ec227f39e..66f2dfdf4 100644 --- a/troposphere/mediatailor.py +++ b/troposphere/mediatailor.py @@ -68,6 +68,16 @@ class SlateSource(AWSProperty): } +class TimeShiftConfiguration(AWSProperty): + """ + `TimeShiftConfiguration `__ + """ + + props: PropsDictType = { + "MaxTimeDelaySeconds": (double, True), + } + + class Channel(AWSObject): """ `Channel `__ @@ -83,6 +93,7 @@ class Channel(AWSObject): "PlaybackMode": (str, True), "Tags": (Tags, False), "Tier": (str, False), + "TimeShiftConfiguration": (TimeShiftConfiguration, False), } diff --git a/troposphere/mwaa.py b/troposphere/mwaa.py index ce795fe5e..248acd752 100644 --- a/troposphere/mwaa.py +++ b/troposphere/mwaa.py @@ -58,6 +58,7 @@ class Environment(AWSObject): "AirflowConfigurationOptions": (dict, False), "AirflowVersion": (str, False), "DagS3Path": (str, False), + "EndpointManagement": (str, False), "EnvironmentClass": (str, False), "ExecutionRoleArn": (str, False), "KmsKey": (str, False), diff --git a/troposphere/networkfirewall.py b/troposphere/networkfirewall.py index 3fb58b514..e711e8bdc 100644 --- a/troposphere/networkfirewall.py +++ b/troposphere/networkfirewall.py @@ -161,6 +161,7 @@ class FirewallPolicyProperty(AWSProperty): "StatelessDefaultActions": ([str], True), "StatelessFragmentDefaultActions": ([str], True), "StatelessRuleGroupReferences": ([StatelessRuleGroupReference], False), + "TLSInspectionConfigurationArn": (str, False), } @@ -308,7 +309,7 @@ class StatefulRule(AWSProperty): class Address(AWSProperty): """ - `Address `__ + `Address `__ """ props: PropsDictType = { @@ -318,7 +319,7 @@ class Address(AWSProperty): class PortRange(AWSProperty): """ - `PortRange `__ + `PortRange `__ """ props: PropsDictType = { @@ -437,3 +438,76 @@ class RuleGroup(AWSObject): "Tags": (Tags, False), "Type": (validate_rule_group_type, True), } + + +class CheckCertificateRevocationStatus(AWSProperty): + """ + `CheckCertificateRevocationStatus `__ + """ + + props: PropsDictType = { + "RevokedStatusAction": (str, False), + "UnknownStatusAction": (str, False), + } + + +class ServerCertificate(AWSProperty): + """ + `ServerCertificate `__ + """ + + props: PropsDictType = { + "ResourceArn": (str, False), + } + + +class ServerCertificateScope(AWSProperty): + """ + `ServerCertificateScope `__ + """ + + props: PropsDictType = { + "DestinationPorts": ([PortRange], False), + "Destinations": ([Address], False), + "Protocols": ([integer], False), + "SourcePorts": ([PortRange], False), + "Sources": ([Address], False), + } + + +class ServerCertificateConfiguration(AWSProperty): + """ + `ServerCertificateConfiguration `__ + """ + + props: PropsDictType = { + "CertificateAuthorityArn": (str, False), + "CheckCertificateRevocationStatus": (CheckCertificateRevocationStatus, False), + "Scopes": ([ServerCertificateScope], False), + "ServerCertificates": ([ServerCertificate], False), + } + + +class TLSInspectionConfigurationProperty(AWSProperty): + """ + `TLSInspectionConfigurationProperty `__ + """ + + props: PropsDictType = { + "ServerCertificateConfigurations": ([ServerCertificateConfiguration], False), + } + + +class TLSInspectionConfiguration(AWSObject): + """ + `TLSInspectionConfiguration `__ + """ + + resource_type = "AWS::NetworkFirewall::TLSInspectionConfiguration" + + props: PropsDictType = { + "Description": (str, False), + "TLSInspectionConfiguration": (TLSInspectionConfigurationProperty, True), + "TLSInspectionConfigurationName": (str, True), + "Tags": (Tags, False), + } diff --git a/troposphere/opensearchserverless.py b/troposphere/opensearchserverless.py index 2d1801da4..5f7d21cc1 100644 --- a/troposphere/opensearchserverless.py +++ b/troposphere/opensearchserverless.py @@ -35,11 +35,27 @@ class Collection(AWSObject): props: PropsDictType = { "Description": (str, False), "Name": (str, True), + "StandbyReplicas": (str, False), "Tags": (Tags, False), "Type": (str, False), } +class LifecyclePolicy(AWSObject): + """ + `LifecyclePolicy `__ + """ + + resource_type = "AWS::OpenSearchServerless::LifecyclePolicy" + + props: PropsDictType = { + "Description": (str, False), + "Name": (str, True), + "Policy": (str, True), + "Type": (str, True), + } + + class SamlConfigOptions(AWSProperty): """ `SamlConfigOptions `__ diff --git a/troposphere/opensearchservice.py b/troposphere/opensearchservice.py index e34f459d1..49c7d0412 100644 --- a/troposphere/opensearchservice.py +++ b/troposphere/opensearchservice.py @@ -65,6 +65,16 @@ class AdvancedSecurityOptionsInput(AWSProperty): } +class ColdStorageOptions(AWSProperty): + """ + `ColdStorageOptions `__ + """ + + props: PropsDictType = { + "Enabled": (boolean, False), + } + + class ZoneAwarenessConfig(AWSProperty): """ `ZoneAwarenessConfig `__ @@ -81,6 +91,7 @@ class ClusterConfig(AWSProperty): """ props: PropsDictType = { + "ColdStorageOptions": (ColdStorageOptions, False), "DedicatedMasterCount": (integer, False), "DedicatedMasterEnabled": (boolean, False), "DedicatedMasterType": (str, False), @@ -249,6 +260,7 @@ class Domain(AWSObject): "EBSOptions": (EBSOptions, False), "EncryptionAtRestOptions": (EncryptionAtRestOptions, False), "EngineVersion": (validate_search_service_engine_version, False), + "IPAddressType": (str, False), "LogPublishingOptions": (dict, False), "NodeToNodeEncryptionOptions": (NodeToNodeEncryptionOptions, False), "OffPeakWindowOptions": (OffPeakWindowOptions, False), diff --git a/troposphere/osis.py b/troposphere/osis.py index e75062cbd..562d10bf4 100644 --- a/troposphere/osis.py +++ b/troposphere/osis.py @@ -10,13 +10,33 @@ from .validators import boolean, integer +class BufferOptions(AWSProperty): + """ + `BufferOptions `__ + """ + + props: PropsDictType = { + "PersistentBufferEnabled": (boolean, True), + } + + +class EncryptionAtRestOptions(AWSProperty): + """ + `EncryptionAtRestOptions `__ + """ + + props: PropsDictType = { + "KmsKeyArn": (str, True), + } + + class CloudWatchLogDestination(AWSProperty): """ `CloudWatchLogDestination `__ """ props: PropsDictType = { - "LogGroup": (str, False), + "LogGroup": (str, True), } @@ -38,7 +58,7 @@ class VpcOptions(AWSProperty): props: PropsDictType = { "SecurityGroupIds": ([str], False), - "SubnetIds": ([str], False), + "SubnetIds": ([str], True), } @@ -50,6 +70,8 @@ class Pipeline(AWSObject): resource_type = "AWS::OSIS::Pipeline" props: PropsDictType = { + "BufferOptions": (BufferOptions, False), + "EncryptionAtRestOptions": (EncryptionAtRestOptions, False), "LogPublishingOptions": (LogPublishingOptions, False), "MaxUnits": (integer, True), "MinUnits": (integer, True), diff --git a/troposphere/pinpoint.py b/troposphere/pinpoint.py index 846c66ae0..42cc5d859 100644 --- a/troposphere/pinpoint.py +++ b/troposphere/pinpoint.py @@ -540,9 +540,11 @@ class GCMChannel(AWSObject): resource_type = "AWS::Pinpoint::GCMChannel" props: PropsDictType = { - "ApiKey": (str, True), + "ApiKey": (str, False), "ApplicationId": (str, True), + "DefaultAuthenticationMethod": (str, False), "Enabled": (boolean, False), + "ServiceJson": (str, False), } diff --git a/troposphere/pipes.py b/troposphere/pipes.py index 5233d76be..f90c98fc9 100644 --- a/troposphere/pipes.py +++ b/troposphere/pipes.py @@ -33,6 +33,53 @@ class PipeEnrichmentParameters(AWSProperty): } +class CloudwatchLogsLogDestination(AWSProperty): + """ + `CloudwatchLogsLogDestination `__ + """ + + props: PropsDictType = { + "LogGroupArn": (str, False), + } + + +class FirehoseLogDestination(AWSProperty): + """ + `FirehoseLogDestination `__ + """ + + props: PropsDictType = { + "DeliveryStreamArn": (str, False), + } + + +class S3LogDestination(AWSProperty): + """ + `S3LogDestination `__ + """ + + props: PropsDictType = { + "BucketName": (str, False), + "BucketOwner": (str, False), + "OutputFormat": (str, False), + "Prefix": (str, False), + } + + +class PipeLogConfiguration(AWSProperty): + """ + `PipeLogConfiguration `__ + """ + + props: PropsDictType = { + "CloudwatchLogsLogDestination": (CloudwatchLogsLogDestination, False), + "FirehoseLogDestination": (FirehoseLogDestination, False), + "IncludeExecutionData": ([str], False), + "Level": (str, False), + "S3LogDestination": (S3LogDestination, False), + } + + class Filter(AWSProperty): """ `Filter `__ @@ -633,6 +680,7 @@ class Pipe(AWSObject): "DesiredState": (str, False), "Enrichment": (str, False), "EnrichmentParameters": (PipeEnrichmentParameters, False), + "LogConfiguration": (PipeLogConfiguration, False), "Name": (str, False), "RoleArn": (str, True), "Source": (str, True), diff --git a/troposphere/quicksight.py b/troposphere/quicksight.py index abd7022fb..2db7b1de7 100644 --- a/troposphere/quicksight.py +++ b/troposphere/quicksight.py @@ -162,6 +162,17 @@ class AnalysisDefaults(AWSProperty): } +class AssetOptions(AWSProperty): + """ + `AssetOptions `__ + """ + + props: PropsDictType = { + "Timezone": (str, False), + "WeekStart": (str, False), + } + + class CalculatedField(AWSProperty): """ `CalculatedField `__ @@ -5670,11 +5681,34 @@ class AnalysisDefinition(AWSProperty): "ColumnConfigurations": ([ColumnConfiguration], False), "DataSetIdentifierDeclarations": ([DataSetIdentifierDeclaration], True), "FilterGroups": ([FilterGroup], False), + "Options": (AssetOptions, False), "ParameterDeclarations": ([ParameterDeclaration], False), "Sheets": ([SheetDefinition], False), } +class Entity(AWSProperty): + """ + `Entity `__ + """ + + props: PropsDictType = { + "Path": (str, False), + } + + +class AnalysisError(AWSProperty): + """ + `AnalysisError `__ + """ + + props: PropsDictType = { + "Message": (str, False), + "Type": (str, False), + "ViolatedEntities": ([Entity], False), + } + + class DataSetReference(AWSProperty): """ `DataSetReference `__ @@ -5772,7 +5806,17 @@ class ResourcePermission(AWSProperty): props: PropsDictType = { "Actions": ([str], True), "Principal": (str, True), - "Resource": (str, False), + } + + +class Sheet(AWSProperty): + """ + `Sheet `__ + """ + + props: PropsDictType = { + "Name": (str, False), + "SheetId": (str, False), } @@ -5797,9 +5841,11 @@ class Analysis(AWSObject): "AnalysisId": (str, True), "AwsAccountId": (str, True), "Definition": (AnalysisDefinition, False), + "Errors": ([AnalysisError], False), "Name": (str, True), "Parameters": (Parameters, False), "Permissions": ([ResourcePermission], False), + "Sheets": ([Sheet], False), "SourceEntity": (AnalysisSourceEntity, False), "Status": (str, False), "Tags": (Tags, False), @@ -5983,11 +6029,22 @@ class DashboardVersionDefinition(AWSProperty): "ColumnConfigurations": ([ColumnConfiguration], False), "DataSetIdentifierDeclarations": ([DataSetIdentifierDeclaration], True), "FilterGroups": ([FilterGroup], False), + "Options": (AssetOptions, False), "ParameterDeclarations": ([ParameterDeclaration], False), "Sheets": ([SheetDefinition], False), } +class LinkSharingConfiguration(AWSProperty): + """ + `LinkSharingConfiguration `__ + """ + + props: PropsDictType = { + "Permissions": ([ResourcePermission], False), + } + + class Dashboard(AWSObject): """ `Dashboard `__ @@ -6000,6 +6057,8 @@ class Dashboard(AWSObject): "DashboardId": (str, True), "DashboardPublishOptions": (DashboardPublishOptions, False), "Definition": (DashboardVersionDefinition, False), + "LinkEntities": ([str], False), + "LinkSharingConfiguration": (LinkSharingConfiguration, False), "Name": (str, True), "Parameters": (Parameters, False), "Permissions": ([ResourcePermission], False), @@ -6271,6 +6330,7 @@ class CastColumnTypeOperation(AWSProperty): "ColumnName": (str, True), "Format": (str, False), "NewColumnType": (str, True), + "SubType": (str, False), } @@ -6419,6 +6479,7 @@ class InputColumn(AWSProperty): props: PropsDictType = { "Name": (str, True), + "SubType": (str, False), "Type": (str, True), } @@ -6766,6 +6827,19 @@ class SqlServerParameters(AWSProperty): } +class StarburstParameters(AWSProperty): + """ + `StarburstParameters `__ + """ + + props: PropsDictType = { + "Catalog": (str, True), + "Host": (str, True), + "Port": (double, True), + "ProductType": (str, False), + } + + class TeradataParameters(AWSProperty): """ `TeradataParameters `__ @@ -6778,6 +6852,18 @@ class TeradataParameters(AWSProperty): } +class TrinoParameters(AWSProperty): + """ + `TrinoParameters `__ + """ + + props: PropsDictType = { + "Catalog": (str, True), + "Host": (str, True), + "Port": (double, True), + } + + class DataSourceParameters(AWSProperty): """ `DataSourceParameters `__ @@ -6801,7 +6887,9 @@ class DataSourceParameters(AWSProperty): "SnowflakeParameters": (SnowflakeParameters, False), "SparkParameters": (SparkParameters, False), "SqlServerParameters": (SqlServerParameters, False), + "StarburstParameters": (StarburstParameters, False), "TeradataParameters": (TeradataParameters, False), + "TrinoParameters": (TrinoParameters, False), } @@ -7032,6 +7120,7 @@ class TemplateVersionDefinition(AWSProperty): "ColumnConfigurations": ([ColumnConfiguration], False), "DataSetConfigurations": ([DataSetConfiguration], True), "FilterGroups": ([FilterGroup], False), + "Options": (AssetOptions, False), "ParameterDeclarations": ([ParameterDeclaration], False), "Sheets": ([SheetDefinition], False), } @@ -7566,6 +7655,7 @@ class Topic(AWSObject): "Description": (str, False), "Name": (str, False), "TopicId": (str, False), + "UserExperienceVersion": (str, False), } @@ -7589,28 +7679,6 @@ class VPCConnection(AWSObject): } -class Entity(AWSProperty): - """ - `Entity `__ - """ - - props: PropsDictType = { - "Path": (str, False), - } - - -class AnalysisError(AWSProperty): - """ - `AnalysisError `__ - """ - - props: PropsDictType = { - "Message": (str, False), - "Type": (str, False), - "ViolatedEntities": ([Entity], False), - } - - class DashboardError(AWSProperty): """ `DashboardError `__ @@ -7637,17 +7705,6 @@ class NetworkInterface(AWSProperty): } -class Sheet(AWSProperty): - """ - `Sheet `__ - """ - - props: PropsDictType = { - "Name": (str, False), - "SheetId": (str, False), - } - - class TemplateError(AWSProperty): """ `TemplateError `__ diff --git a/troposphere/rds.py b/troposphere/rds.py index e85442d5a..d4ba56a7a 100644 --- a/troposphere/rds.py +++ b/troposphere/rds.py @@ -120,6 +120,7 @@ class DBCluster(AWSObject): "Domain": (str, False), "DomainIAMRoleName": (str, False), "EnableCloudwatchLogsExports": ([str], False), + "EnableGlobalWriteForwarding": (boolean, False), "EnableHttpEndpoint": (boolean, False), "EnableIAMDatabaseAuthentication": (boolean, False), "Engine": (validate_engine, False), @@ -249,6 +250,7 @@ class DBInstance(AWSObject): "DBSecurityGroups": (list, False), "DBSnapshotIdentifier": (str, False), "DBSubnetGroupName": (str, False), + "DedicatedLogVolume": (boolean, False), "DeleteAutomatedBackups": (boolean, False), "DeletionProtection": (boolean, False), "Domain": (str, False), @@ -501,6 +503,23 @@ class GlobalCluster(AWSObject): } +class Integration(AWSObject): + """ + `Integration `__ + """ + + resource_type = "AWS::RDS::Integration" + + props: PropsDictType = { + "AdditionalEncryptionContext": (dict, False), + "IntegrationName": (str, False), + "KMSKeyId": (str, False), + "SourceArn": (str, True), + "Tags": (Tags, False), + "TargetArn": (str, True), + } + + class OptionSetting(AWSProperty): """ `OptionSetting `__ diff --git a/troposphere/redshift.py b/troposphere/redshift.py index 93e47432d..48939e74f 100644 --- a/troposphere/redshift.py +++ b/troposphere/redshift.py @@ -27,7 +27,7 @@ class LoggingProperties(AWSProperty): """ props: PropsDictType = { - "BucketName": (str, True), + "BucketName": (str, False), "S3KeyPrefix": (str, False), } @@ -69,9 +69,13 @@ class Cluster(AWSObject): "KmsKeyId": (str, False), "LoggingProperties": (LoggingProperties, False), "MaintenanceTrackName": (str, False), + "ManageMasterPassword": (boolean, False), "ManualSnapshotRetentionPeriod": (integer, False), - "MasterUserPassword": (str, True), + "MasterPasswordSecretKmsKeyId": (str, False), + "MasterUserPassword": (str, False), "MasterUsername": (str, True), + "MultiAZ": (boolean, False), + "NamespaceResourcePolicy": (dict, False), "NodeType": (str, True), "NumberOfNodes": (integer, False), "OwnerAccount": (str, False), diff --git a/troposphere/redshiftserverless.py b/troposphere/redshiftserverless.py index 327866953..2c3a3a02d 100755 --- a/troposphere/redshiftserverless.py +++ b/troposphere/redshiftserverless.py @@ -18,6 +18,7 @@ class Namespace(AWSObject): resource_type = "AWS::RedshiftServerless::Namespace" props: PropsDictType = { + "AdminPasswordSecretKmsKeyId": (str, False), "AdminUserPassword": (str, False), "AdminUsername": (str, False), "DbName": (str, False), @@ -27,7 +28,10 @@ class Namespace(AWSObject): "IamRoles": ([str], False), "KmsKeyId": (str, False), "LogExports": ([str], False), + "ManageAdminPassword": (boolean, False), "NamespaceName": (str, True), + "NamespaceResourcePolicy": (dict, False), + "RedshiftIdcApplicationArn": (str, False), "Tags": (Tags, False), } @@ -91,6 +95,7 @@ class WorkgroupProperty(AWSProperty): "CreationDate": (str, False), "Endpoint": (Endpoint, False), "EnhancedVpcRouting": (boolean, False), + "MaxCapacity": (integer, False), "NamespaceName": (str, False), "PubliclyAccessible": (boolean, False), "SecurityGroupIds": ([str], False), @@ -113,6 +118,7 @@ class Workgroup(AWSObject): "BaseCapacity": (integer, False), "ConfigParameters": ([ConfigParameter], False), "EnhancedVpcRouting": (boolean, False), + "MaxCapacity": (integer, False), "NamespaceName": (str, False), "Port": (integer, False), "PubliclyAccessible": (boolean, False), @@ -130,6 +136,8 @@ class NamespaceProperty(AWSProperty): """ props: PropsDictType = { + "AdminPasswordSecretArn": (str, False), + "AdminPasswordSecretKmsKeyId": (str, False), "AdminUsername": (str, False), "CreationDate": (str, False), "DbName": (str, False), diff --git a/troposphere/resourceexplorer2.py b/troposphere/resourceexplorer2.py index 2e076571c..1a71bb373 100644 --- a/troposphere/resourceexplorer2.py +++ b/troposphere/resourceexplorer2.py @@ -34,23 +34,23 @@ class Index(AWSObject): } -class Filters(AWSProperty): +class IncludedProperty(AWSProperty): """ - `Filters `__ + `IncludedProperty `__ """ props: PropsDictType = { - "FilterString": (str, True), + "Name": (str, True), } -class IncludedProperty(AWSProperty): +class SearchFilter(AWSProperty): """ - `IncludedProperty `__ + `SearchFilter `__ """ props: PropsDictType = { - "Name": (str, True), + "FilterString": (str, True), } @@ -62,8 +62,9 @@ class View(AWSObject): resource_type = "AWS::ResourceExplorer2::View" props: PropsDictType = { - "Filters": (Filters, False), + "Filters": (SearchFilter, False), "IncludedProperties": ([IncludedProperty], False), + "Scope": (str, False), "Tags": (dict, False), "ViewName": (str, True), } diff --git a/troposphere/route53.py b/troposphere/route53.py index 9e7c68c2d..0155a49fa 100644 --- a/troposphere/route53.py +++ b/troposphere/route53.py @@ -182,6 +182,30 @@ class GeoLocation(AWSProperty): } +class Coordinates(AWSProperty): + """ + `Coordinates `__ + """ + + props: PropsDictType = { + "Latitude": (str, True), + "Longitude": (str, True), + } + + +class GeoProximityLocation(AWSProperty): + """ + `GeoProximityLocation `__ + """ + + props: PropsDictType = { + "AWSRegion": (str, False), + "Bias": (integer, False), + "Coordinates": (Coordinates, False), + "LocalZoneGroup": (str, False), + } + + class RecordSet(AWSProperty): """ `RecordSet `__ @@ -192,6 +216,7 @@ class RecordSet(AWSProperty): "CidrRoutingConfig": (CidrRoutingConfig, False), "Failover": (str, False), "GeoLocation": (GeoLocation, False), + "GeoProximityLocation": (GeoProximityLocation, False), "HealthCheckId": (str, False), "HostedZoneId": (str, False), "HostedZoneName": (str, False), @@ -234,6 +259,7 @@ class RecordSetType(AWSObject): "Comment": (str, False), "Failover": (str, False), "GeoLocation": (GeoLocation, False), + "GeoProximityLocation": (GeoProximityLocation, False), "HealthCheckId": (str, False), "HostedZoneId": (str, False), "HostedZoneName": (str, False), diff --git a/troposphere/route53resolver.py b/troposphere/route53resolver.py index 4dbef3eb6..b36c224bc 100644 --- a/troposphere/route53resolver.py +++ b/troposphere/route53resolver.py @@ -39,6 +39,7 @@ class FirewallRule(AWSProperty): "BlockResponse": (str, False), "FirewallDomainListId": (str, True), "Priority": (integer, True), + "Qtype": (str, False), } @@ -139,6 +140,7 @@ class ResolverEndpoint(AWSObject): "Name": (str, False), "OutpostArn": (str, False), "PreferredInstanceType": (str, False), + "Protocols": ([str], False), "ResolverEndpointType": (str, False), "SecurityGroupIds": ([str], True), "Tags": (Tags, False), @@ -180,6 +182,7 @@ class TargetAddress(AWSProperty): "Ip": (str, False), "Ipv6": (str, False), "Port": (str, False), + "Protocol": (str, False), } diff --git a/troposphere/s3.py b/troposphere/s3.py index d4c4fa42d..4a42b86bc 100644 --- a/troposphere/s3.py +++ b/troposphere/s3.py @@ -24,6 +24,72 @@ ) +class AccessGrantsLocationConfiguration(AWSProperty): + """ + `AccessGrantsLocationConfiguration `__ + """ + + props: PropsDictType = { + "S3SubPrefix": (str, True), + } + + +class Grantee(AWSProperty): + """ + `Grantee `__ + """ + + props: PropsDictType = { + "GranteeIdentifier": (str, True), + "GranteeType": (str, True), + } + + +class AccessGrant(AWSObject): + """ + `AccessGrant `__ + """ + + resource_type = "AWS::S3::AccessGrant" + + props: PropsDictType = { + "AccessGrantsLocationConfiguration": (AccessGrantsLocationConfiguration, False), + "AccessGrantsLocationId": (str, True), + "ApplicationArn": (str, False), + "Grantee": (Grantee, True), + "Permission": (str, True), + "S3PrefixType": (str, False), + "Tags": (Tags, False), + } + + +class AccessGrantsInstance(AWSObject): + """ + `AccessGrantsInstance `__ + """ + + resource_type = "AWS::S3::AccessGrantsInstance" + + props: PropsDictType = { + "IdentityCenterArn": (str, False), + "Tags": (Tags, False), + } + + +class AccessGrantsLocation(AWSObject): + """ + `AccessGrantsLocation `__ + """ + + resource_type = "AWS::S3::AccessGrantsLocation" + + props: PropsDictType = { + "IamRoleArn": (str, False), + "LocationScope": (str, False), + "Tags": (Tags, False), + } + + class PublicAccessBlockConfiguration(AWSProperty): """ `PublicAccessBlockConfiguration `__ @@ -166,7 +232,7 @@ class BucketEncryption(AWSProperty): class CorsRules(AWSProperty): """ - `CorsRules `__ + `CorsRules `__ """ props: PropsDictType = { @@ -181,7 +247,7 @@ class CorsRules(AWSProperty): class CorsConfiguration(AWSProperty): """ - `CorsConfiguration `__ + `CorsConfiguration `__ """ props: PropsDictType = { @@ -242,7 +308,7 @@ class AbortIncompleteMultipartUpload(AWSProperty): class LifecycleRuleTransition(AWSProperty): """ - `LifecycleRuleTransition `__ + `LifecycleRuleTransition `__ """ props: PropsDictType = { @@ -254,7 +320,7 @@ class LifecycleRuleTransition(AWSProperty): class NoncurrentVersionExpiration(AWSProperty): """ - `NoncurrentVersionExpiration `__ + `NoncurrentVersionExpiration `__ """ props: PropsDictType = { @@ -265,7 +331,7 @@ class NoncurrentVersionExpiration(AWSProperty): class NoncurrentVersionTransition(AWSProperty): """ - `NoncurrentVersionTransition `__ + `NoncurrentVersionTransition `__ """ props: PropsDictType = { @@ -277,7 +343,7 @@ class NoncurrentVersionTransition(AWSProperty): class LifecycleRule(AWSProperty): """ - `LifecycleRule `__ + `LifecycleRule `__ """ props: PropsDictType = { @@ -290,8 +356,8 @@ class LifecycleRule(AWSProperty): "NoncurrentVersionExpirationInDays": (integer, False), "NoncurrentVersionTransition": (NoncurrentVersionTransition, False), "NoncurrentVersionTransitions": ([NoncurrentVersionTransition], False), - "ObjectSizeGreaterThan": (integer, False), - "ObjectSizeLessThan": (integer, False), + "ObjectSizeGreaterThan": (str, False), + "ObjectSizeLessThan": (str, False), "Prefix": (str, False), "Status": (str, True), "TagFilters": ([TagFilter], False), @@ -305,7 +371,7 @@ def validate(self): class LifecycleConfiguration(AWSProperty): """ - `LifecycleConfiguration `__ + `LifecycleConfiguration `__ """ props: PropsDictType = { @@ -313,14 +379,36 @@ class LifecycleConfiguration(AWSProperty): } +class PartitionedPrefix(AWSProperty): + """ + `PartitionedPrefix `__ + """ + + props: PropsDictType = { + "PartitionDateSource": (str, False), + } + + +class TargetObjectKeyFormat(AWSProperty): + """ + `TargetObjectKeyFormat `__ + """ + + props: PropsDictType = { + "PartitionedPrefix": (PartitionedPrefix, False), + "SimplePrefix": (dict, False), + } + + class LoggingConfiguration(AWSProperty): """ - `LoggingConfiguration `__ + `LoggingConfiguration `__ """ props: PropsDictType = { "DestinationBucketName": (validate_s3_bucket_name, False), "LogFilePrefix": (str, False), + "TargetObjectKeyFormat": (TargetObjectKeyFormat, False), } @@ -339,48 +427,83 @@ class MetricsConfiguration(AWSProperty): class EventBridgeConfiguration(AWSProperty): """ - `EventBridgeConfiguration `__ + `EventBridgeConfiguration `__ """ props: PropsDictType = { - "EventBridgeEnabled": (boolean, False), + "EventBridgeEnabled": (boolean, True), } -class Rules(AWSProperty): +class MatchObjectAge(AWSProperty): """ - `Rules `__ + `MatchObjectAge `__ """ props: PropsDictType = { - "Name": (str, True), - "Value": (str, True), + "DaysGreaterThan": (integer, False), + "DaysLessThan": (integer, False), } -class S3Key(AWSProperty): +class MatchObjectSize(AWSProperty): """ - `S3Key `__ + `MatchObjectSize `__ """ props: PropsDictType = { - "Rules": ([Rules], True), + "BytesGreaterThan": (integer, False), + "BytesLessThan": (integer, False), + } + + +class And(AWSProperty): + """ + `And `__ + """ + + props: PropsDictType = { + "MatchAnyPrefix": ([str], False), + "MatchAnySuffix": ([str], False), + "MatchAnyTag": (Tags, False), + "MatchObjectAge": (MatchObjectAge, False), + "MatchObjectSize": (MatchObjectSize, False), + } + + +class Or(AWSProperty): + """ + `Or `__ + """ + + props: PropsDictType = { + "MatchAnyPrefix": ([str], False), + "MatchAnySuffix": ([str], False), + "MatchAnyTag": (Tags, False), + "MatchObjectAge": (MatchObjectAge, False), + "MatchObjectSize": (MatchObjectSize, False), } class Filter(AWSProperty): """ - `Filter `__ + `Filter `__ """ props: PropsDictType = { - "S3Key": (S3Key, True), + "And": (And, False), + "MatchAnyPrefix": ([str], False), + "MatchAnySuffix": ([str], False), + "MatchAnyTag": (Tags, False), + "MatchObjectAge": (MatchObjectAge, False), + "MatchObjectSize": (MatchObjectSize, False), + "Or": (Or, False), } class LambdaConfigurations(AWSProperty): """ - `LambdaConfigurations `__ + `LambdaConfigurations `__ """ props: PropsDictType = { @@ -392,7 +515,7 @@ class LambdaConfigurations(AWSProperty): class QueueConfigurations(AWSProperty): """ - `QueueConfigurations `__ + `QueueConfigurations `__ """ props: PropsDictType = { @@ -404,7 +527,7 @@ class QueueConfigurations(AWSProperty): class TopicConfigurations(AWSProperty): """ - `TopicConfigurations `__ + `TopicConfigurations `__ """ props: PropsDictType = { @@ -416,7 +539,7 @@ class TopicConfigurations(AWSProperty): class NotificationConfiguration(AWSProperty): """ - `NotificationConfiguration `__ + `NotificationConfiguration `__ """ props: PropsDictType = { @@ -544,7 +667,7 @@ class ReplicationTime(AWSProperty): class ReplicationConfigurationRulesDestination(AWSProperty): """ - `ReplicationConfigurationRulesDestination `__ + `ReplicationConfigurationRulesDestination `__ """ props: PropsDictType = { @@ -614,7 +737,7 @@ class SourceSelectionCriteria(AWSProperty): class ReplicationConfigurationRules(AWSProperty): """ - `ReplicationConfigurationRules `__ + `ReplicationConfigurationRules `__ """ props: PropsDictType = { @@ -642,7 +765,7 @@ class ReplicationConfiguration(AWSProperty): class VersioningConfiguration(AWSProperty): """ - `VersioningConfiguration `__ + `VersioningConfiguration `__ """ props: PropsDictType = { @@ -652,7 +775,7 @@ class VersioningConfiguration(AWSProperty): class RedirectAllRequestsTo(AWSProperty): """ - `RedirectAllRequestsTo `__ + `RedirectAllRequestsTo `__ """ props: PropsDictType = { @@ -663,7 +786,7 @@ class RedirectAllRequestsTo(AWSProperty): class RedirectRule(AWSProperty): """ - `RedirectRule `__ + `RedirectRule `__ """ props: PropsDictType = { @@ -677,7 +800,7 @@ class RedirectRule(AWSProperty): class RoutingRuleCondition(AWSProperty): """ - `RoutingRuleCondition `__ + `RoutingRuleCondition `__ """ props: PropsDictType = { @@ -688,7 +811,7 @@ class RoutingRuleCondition(AWSProperty): class RoutingRule(AWSProperty): """ - `RoutingRule `__ + `RoutingRule `__ """ props: PropsDictType = { @@ -699,7 +822,7 @@ class RoutingRule(AWSProperty): class WebsiteConfiguration(AWSProperty): """ - `WebsiteConfiguration `__ + `WebsiteConfiguration `__ """ props: PropsDictType = { @@ -712,7 +835,7 @@ class WebsiteConfiguration(AWSProperty): class Bucket(AWSObject): """ - `Bucket `__ + `Bucket `__ """ resource_type = "AWS::S3::Bucket" @@ -882,6 +1005,27 @@ class BucketLevel(AWSProperty): } +class StorageLensGroupSelectionCriteria(AWSProperty): + """ + `StorageLensGroupSelectionCriteria `__ + """ + + props: PropsDictType = { + "Exclude": ([str], False), + "Include": ([str], False), + } + + +class StorageLensGroupLevel(AWSProperty): + """ + `StorageLensGroupLevel `__ + """ + + props: PropsDictType = { + "StorageLensGroupSelectionCriteria": (StorageLensGroupSelectionCriteria, False), + } + + class AccountLevel(AWSProperty): """ `AccountLevel `__ @@ -893,6 +1037,7 @@ class AccountLevel(AWSProperty): "AdvancedDataProtectionMetrics": (AdvancedDataProtectionMetrics, False), "BucketLevel": (BucketLevel, True), "DetailedStatusCodesMetrics": (DetailedStatusCodesMetrics, False), + "StorageLensGroupLevel": (StorageLensGroupLevel, False), } @@ -1004,6 +1149,20 @@ class StorageLens(AWSObject): } +class StorageLensGroup(AWSObject): + """ + `StorageLensGroup `__ + """ + + resource_type = "AWS::S3::StorageLensGroup" + + props: PropsDictType = { + "Filter": (Filter, True), + "Name": (str, True), + "Tags": (Tags, False), + } + + class PolicyStatus(AWSProperty): """ `PolicyStatus `__ @@ -1012,3 +1171,24 @@ class PolicyStatus(AWSProperty): props: PropsDictType = { "IsPublic": (str, True), } + + +class Rules(AWSProperty): + """ + `Rules `__ + """ + + props: PropsDictType = { + "Name": (str, True), + "Value": (str, True), + } + + +class S3Key(AWSProperty): + """ + `S3Key `__ + """ + + props: PropsDictType = { + "Rules": ([Rules], True), + } diff --git a/troposphere/sagemaker.py b/troposphere/sagemaker.py index 7d49cf9f0..0e2439ed9 100644 --- a/troposphere/sagemaker.py +++ b/troposphere/sagemaker.py @@ -39,6 +39,42 @@ class App(AWSObject): } +class CustomImageContainerEnvironmentVariable(AWSProperty): + """ + `CustomImageContainerEnvironmentVariable `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (str, True), + } + + +class ContainerConfig(AWSProperty): + """ + `ContainerConfig `__ + """ + + props: PropsDictType = { + "ContainerArguments": ([str], False), + "ContainerEntrypoint": ([str], False), + "ContainerEnvironmentVariables": ( + [CustomImageContainerEnvironmentVariable], + False, + ), + } + + +class JupyterLabAppImageConfig(AWSProperty): + """ + `JupyterLabAppImageConfig `__ + """ + + props: PropsDictType = { + "ContainerConfig": (ContainerConfig, False), + } + + class FileSystemConfig(AWSProperty): """ `FileSystemConfig `__ @@ -82,6 +118,7 @@ class AppImageConfig(AWSObject): props: PropsDictType = { "AppImageConfigName": (str, True), + "JupyterLabAppImageConfig": (JupyterLabAppImageConfig, False), "KernelGatewayImageConfig": (KernelGatewayImageConfig, False), "Tags": (Tags, False), } @@ -442,6 +479,17 @@ class DefaultSpaceSettings(AWSProperty): } +class DockerSettings(AWSProperty): + """ + `DockerSettings `__ + """ + + props: PropsDictType = { + "EnableDockerAccess": (str, False), + "VpcOnlyTrustedAccounts": ([str], False), + } + + class RStudioServerProDomainSettings(AWSProperty): """ `RStudioServerProDomainSettings `__ @@ -461,11 +509,99 @@ class DomainSettings(AWSProperty): """ props: PropsDictType = { + "DockerSettings": (DockerSettings, False), "RStudioServerProDomainSettings": (RStudioServerProDomainSettings, False), "SecurityGroupIds": ([str], False), } +class CodeEditorAppSettings(AWSProperty): + """ + `CodeEditorAppSettings `__ + """ + + props: PropsDictType = { + "DefaultResourceSpec": (ResourceSpec, False), + "LifecycleConfigArns": ([str], False), + } + + +class EFSFileSystemConfig(AWSProperty): + """ + `EFSFileSystemConfig `__ + """ + + props: PropsDictType = { + "FileSystemId": (str, True), + "FileSystemPath": (str, False), + } + + +class CustomFileSystemConfig(AWSProperty): + """ + `CustomFileSystemConfig `__ + """ + + props: PropsDictType = { + "EFSFileSystemConfig": (EFSFileSystemConfig, False), + } + + +class CustomPosixUserConfig(AWSProperty): + """ + `CustomPosixUserConfig `__ + """ + + props: PropsDictType = { + "Gid": (integer, True), + "Uid": (integer, True), + } + + +class DefaultEbsStorageSettings(AWSProperty): + """ + `DefaultEbsStorageSettings `__ + """ + + props: PropsDictType = { + "DefaultEbsVolumeSizeInGb": (integer, True), + "MaximumEbsVolumeSizeInGb": (integer, True), + } + + +class DefaultSpaceStorageSettings(AWSProperty): + """ + `DefaultSpaceStorageSettings `__ + """ + + props: PropsDictType = { + "DefaultEbsStorageSettings": (DefaultEbsStorageSettings, False), + } + + +class CodeRepositoryProperty(AWSProperty): + """ + `CodeRepositoryProperty `__ + """ + + props: PropsDictType = { + "RepositoryUrl": (str, True), + } + + +class JupyterLabAppSettings(AWSProperty): + """ + `JupyterLabAppSettings `__ + """ + + props: PropsDictType = { + "CodeRepositories": ([CodeRepositoryProperty], False), + "CustomImages": ([CustomImage], False), + "DefaultResourceSpec": (ResourceSpec, False), + "LifecycleConfigArns": ([str], False), + } + + class RStudioServerProAppSettings(AWSProperty): """ `RStudioServerProAppSettings `__ @@ -495,12 +631,19 @@ class UserSettings(AWSProperty): """ props: PropsDictType = { + "CodeEditorAppSettings": (CodeEditorAppSettings, False), + "CustomFileSystemConfigs": ([CustomFileSystemConfig], False), + "CustomPosixUserConfig": (CustomPosixUserConfig, False), + "DefaultLandingUri": (str, False), "ExecutionRole": (str, False), + "JupyterLabAppSettings": (JupyterLabAppSettings, False), "JupyterServerAppSettings": (JupyterServerAppSettings, False), "KernelGatewayAppSettings": (KernelGatewayAppSettings, False), "RStudioServerProAppSettings": (RStudioServerProAppSettings, False), "SecurityGroups": ([str], False), "SharingSettings": (SharingSettings, False), + "SpaceStorageSettings": (DefaultSpaceStorageSettings, False), + "StudioWebPortal": (str, False), } @@ -796,6 +939,28 @@ class ExplainerConfig(AWSProperty): } +class ManagedInstanceScaling(AWSProperty): + """ + `ManagedInstanceScaling `__ + """ + + props: PropsDictType = { + "MaxInstanceCount": (integer, False), + "MinInstanceCount": (integer, False), + "Status": (str, False), + } + + +class RoutingConfig(AWSProperty): + """ + `RoutingConfig `__ + """ + + props: PropsDictType = { + "RoutingStrategy": (str, False), + } + + class ServerlessConfig(AWSProperty): """ `ServerlessConfig `__ @@ -818,10 +983,12 @@ class ProductionVariant(AWSProperty): "ContainerStartupHealthCheckTimeoutInSeconds": (integer, False), "EnableSSMAccess": (boolean, False), "InitialInstanceCount": (integer, False), - "InitialVariantWeight": (double, True), + "InitialVariantWeight": (double, False), "InstanceType": (str, False), + "ManagedInstanceScaling": (ManagedInstanceScaling, False), "ModelDataDownloadTimeoutInSeconds": (integer, False), - "ModelName": (str, True), + "ModelName": (str, False), + "RoutingConfig": (RoutingConfig, False), "ServerlessConfig": (ServerlessConfig, False), "VariantName": (str, True), "VolumeSizeInGB": (integer, False), @@ -838,12 +1005,15 @@ class EndpointConfig(AWSObject): props: PropsDictType = { "AsyncInferenceConfig": (AsyncInferenceConfig, False), "DataCaptureConfig": (DataCaptureConfig, False), + "EnableNetworkIsolation": (boolean, False), "EndpointConfigName": (str, False), + "ExecutionRoleArn": (str, False), "ExplainerConfig": (ExplainerConfig, False), "KmsKeyId": (str, False), "ProductionVariants": ([ProductionVariant], True), "ShadowProductionVariants": ([ProductionVariant], False), "Tags": (Tags, False), + "VpcConfig": (VpcConfig, False), } @@ -904,6 +1074,17 @@ class OnlineStoreSecurityConfig(AWSProperty): } +class TtlDuration(AWSProperty): + """ + `TtlDuration `__ + """ + + props: PropsDictType = { + "Unit": (str, False), + "Value": (integer, False), + } + + class OnlineStoreConfig(AWSProperty): """ `OnlineStoreConfig `__ @@ -912,6 +1093,20 @@ class OnlineStoreConfig(AWSProperty): props: PropsDictType = { "EnableOnlineStore": (boolean, False), "SecurityConfig": (OnlineStoreSecurityConfig, False), + "StorageType": (str, False), + "TtlDuration": (TtlDuration, False), + } + + +class ThroughputConfig(AWSProperty): + """ + `ThroughputConfig `__ + """ + + props: PropsDictType = { + "ProvisionedReadCapacityUnits": (integer, False), + "ProvisionedWriteCapacityUnits": (integer, False), + "ThroughputMode": (str, True), } @@ -932,6 +1127,7 @@ class FeatureGroup(AWSObject): "RecordIdentifierFeatureName": (str, True), "RoleArn": (str, False), "Tags": (Tags, False), + "ThroughputConfig": (ThroughputConfig, False), } @@ -973,6 +1169,101 @@ class ImageVersion(AWSObject): } +class InferenceComponentRuntimeConfig(AWSProperty): + """ + `InferenceComponentRuntimeConfig `__ + """ + + props: PropsDictType = { + "CopyCount": (integer, False), + "CurrentCopyCount": (integer, False), + "DesiredCopyCount": (integer, False), + } + + +class InferenceComponentComputeResourceRequirements(AWSProperty): + """ + `InferenceComponentComputeResourceRequirements `__ + """ + + props: PropsDictType = { + "MaxMemoryRequiredInMb": (integer, False), + "MinMemoryRequiredInMb": (integer, False), + "NumberOfAcceleratorDevicesRequired": (double, False), + "NumberOfCpuCoresRequired": (double, False), + } + + +class DeployedImage(AWSProperty): + """ + `DeployedImage `__ + """ + + props: PropsDictType = { + "ResolutionTime": (str, False), + "ResolvedImage": (str, False), + "SpecifiedImage": (str, False), + } + + +class InferenceComponentContainerSpecification(AWSProperty): + """ + `InferenceComponentContainerSpecification `__ + """ + + props: PropsDictType = { + "ArtifactUrl": (str, False), + "DeployedImage": (DeployedImage, False), + "Environment": (dict, False), + "Image": (str, False), + } + + +class InferenceComponentStartupParameters(AWSProperty): + """ + `InferenceComponentStartupParameters `__ + """ + + props: PropsDictType = { + "ContainerStartupHealthCheckTimeoutInSeconds": (integer, False), + "ModelDataDownloadTimeoutInSeconds": (integer, False), + } + + +class InferenceComponentSpecification(AWSProperty): + """ + `InferenceComponentSpecification `__ + """ + + props: PropsDictType = { + "ComputeResourceRequirements": ( + InferenceComponentComputeResourceRequirements, + True, + ), + "Container": (InferenceComponentContainerSpecification, False), + "ModelName": (str, False), + "StartupParameters": (InferenceComponentStartupParameters, False), + } + + +class InferenceComponent(AWSObject): + """ + `InferenceComponent `__ + """ + + resource_type = "AWS::SageMaker::InferenceComponent" + + props: PropsDictType = { + "EndpointArn": (str, False), + "EndpointName": (str, True), + "InferenceComponentName": (str, False), + "RuntimeConfig": (InferenceComponentRuntimeConfig, True), + "Specification": (InferenceComponentSpecification, True), + "Tags": (Tags, False), + "VariantName": (str, True), + } + + class DataStorageConfig(AWSProperty): """ `DataStorageConfig `__ @@ -1097,6 +1388,27 @@ class ImageConfig(AWSProperty): } +class S3DataSource(AWSProperty): + """ + `S3DataSource `__ + """ + + props: PropsDictType = { + "S3DataType": (str, True), + "S3Uri": (str, True), + } + + +class ModelDataSource(AWSProperty): + """ + `ModelDataSource `__ + """ + + props: PropsDictType = { + "S3DataSource": (S3DataSource, True), + } + + class MultiModelConfig(AWSProperty): """ `MultiModelConfig `__ @@ -1119,6 +1431,7 @@ class ContainerDefinition(AWSProperty): "ImageConfig": (ImageConfig, False), "InferenceSpecificationName": (str, False), "Mode": (str, False), + "ModelDataSource": (ModelDataSource, False), "ModelDataUrl": (str, False), "ModelPackageName": (str, False), "MultiModelConfig": (MultiModelConfig, False), @@ -1145,7 +1458,7 @@ class Model(AWSObject): props: PropsDictType = { "Containers": ([ContainerDefinition], False), "EnableNetworkIsolation": (boolean, False), - "ExecutionRoleArn": (str, True), + "ExecutionRoleArn": (str, False), "InferenceExecutionConfig": (InferenceExecutionConfig, False), "ModelName": (str, False), "PrimaryContainer": (ContainerDefinition, False), @@ -1848,17 +2161,6 @@ class SourceAlgorithmSpecification(AWSProperty): } -class S3DataSource(AWSProperty): - """ - `S3DataSource `__ - """ - - props: PropsDictType = { - "S3DataType": (str, True), - "S3Uri": (str, True), - } - - class DataSource(AWSProperty): """ `DataSource `__ @@ -2364,14 +2666,100 @@ class Project(AWSObject): } +class OwnershipSettings(AWSProperty): + """ + `OwnershipSettings `__ + """ + + props: PropsDictType = { + "OwnerUserProfileName": (str, True), + } + + +class EFSFileSystem(AWSProperty): + """ + `EFSFileSystem `__ + """ + + props: PropsDictType = { + "FileSystemId": (str, True), + } + + +class CustomFileSystem(AWSProperty): + """ + `CustomFileSystem `__ + """ + + props: PropsDictType = { + "EFSFileSystem": (EFSFileSystem, False), + } + + +class SpaceCodeEditorAppSettings(AWSProperty): + """ + `SpaceCodeEditorAppSettings `__ + """ + + props: PropsDictType = { + "DefaultResourceSpec": (ResourceSpec, False), + } + + +class SpaceJupyterLabAppSettings(AWSProperty): + """ + `SpaceJupyterLabAppSettings `__ + """ + + props: PropsDictType = { + "CodeRepositories": ([CodeRepositoryProperty], False), + "DefaultResourceSpec": (ResourceSpec, False), + } + + +class EbsStorageSettings(AWSProperty): + """ + `EbsStorageSettings `__ + """ + + props: PropsDictType = { + "EbsVolumeSizeInGb": (integer, True), + } + + +class SpaceStorageSettings(AWSProperty): + """ + `SpaceStorageSettings `__ + """ + + props: PropsDictType = { + "EbsStorageSettings": (EbsStorageSettings, False), + } + + class SpaceSettings(AWSProperty): """ `SpaceSettings `__ """ props: PropsDictType = { + "AppType": (str, False), + "CodeEditorAppSettings": (SpaceCodeEditorAppSettings, False), + "CustomFileSystems": ([CustomFileSystem], False), + "JupyterLabAppSettings": (SpaceJupyterLabAppSettings, False), "JupyterServerAppSettings": (JupyterServerAppSettings, False), "KernelGatewayAppSettings": (KernelGatewayAppSettings, False), + "SpaceStorageSettings": (SpaceStorageSettings, False), + } + + +class SpaceSharingSettings(AWSProperty): + """ + `SpaceSharingSettings `__ + """ + + props: PropsDictType = { + "SharingType": (str, True), } @@ -2384,8 +2772,11 @@ class Space(AWSObject): props: PropsDictType = { "DomainId": (str, True), + "OwnershipSettings": (OwnershipSettings, False), + "SpaceDisplayName": (str, False), "SpaceName": (str, True), "SpaceSettings": (SpaceSettings, False), + "SpaceSharingSettings": (SpaceSharingSettings, False), "Tags": (Tags, False), } @@ -2491,6 +2882,16 @@ class EndpointMetadata(AWSProperty): } +class ModelAccessConfig(AWSProperty): + """ + `ModelAccessConfig `__ + """ + + props: PropsDictType = { + "AcceptEula": (boolean, True), + } + + class RSessionAppSettings(AWSProperty): """ `RSessionAppSettings `__ diff --git a/troposphere/sns.py b/troposphere/sns.py index b2e63c49a..4a847ab5a 100644 --- a/troposphere/sns.py +++ b/troposphere/sns.py @@ -27,11 +27,25 @@ class SubscriptionResource(AWSObject): "RawMessageDelivery": (boolean, False), "RedrivePolicy": (dict, False), "Region": (str, False), + "ReplayPolicy": (dict, False), "SubscriptionRoleArn": (str, False), "TopicArn": (str, True), } +class LoggingConfig(AWSProperty): + """ + `LoggingConfig `__ + """ + + props: PropsDictType = { + "FailureFeedbackRoleArn": (str, False), + "Protocol": (str, True), + "SuccessFeedbackRoleArn": (str, False), + "SuccessFeedbackSampleRate": (str, False), + } + + class Subscription(AWSProperty): """ `Subscription `__ @@ -54,6 +68,7 @@ class Topic(AWSObject): "ArchivePolicy": (dict, False), "ContentBasedDeduplication": (boolean, False), "DataProtectionPolicy": (dict, False), + "DeliveryStatusLogging": ([LoggingConfig], False), "DisplayName": (str, False), "FifoTopic": (boolean, False), "KmsMasterKeyId": (str, False), diff --git a/troposphere/ssm.py b/troposphere/ssm.py index 335e05977..b3ee34bce 100644 --- a/troposphere/ssm.py +++ b/troposphere/ssm.py @@ -389,6 +389,7 @@ class PatchBaseline(AWSObject): "ApprovedPatches": ([str], False), "ApprovedPatchesComplianceLevel": (compliance_level, False), "ApprovedPatchesEnableNonSecurity": (boolean, False), + "DefaultBaseline": (boolean, False), "Description": (str, False), "GlobalFilters": (PatchFilterGroup, False), "Name": (str, True), diff --git a/troposphere/transfer.py b/troposphere/transfer.py index 0ddccef50..04a06d5bd 100644 --- a/troposphere/transfer.py +++ b/troposphere/transfer.py @@ -151,6 +151,16 @@ class ProtocolDetails(AWSProperty): } +class S3StorageOptions(AWSProperty): + """ + `S3StorageOptions `__ + """ + + props: PropsDictType = { + "DirectoryListingOptimization": (str, False), + } + + class WorkflowDetail(AWSProperty): """ `WorkflowDetail `__ @@ -192,6 +202,7 @@ class Server(AWSObject): "PreAuthenticationLoginBanner": (str, False), "ProtocolDetails": (ProtocolDetails, False), "Protocols": ([str], False), + "S3StorageOptions": (S3StorageOptions, False), "SecurityPolicyName": (str, False), "StructuredLogDestinations": ([str], False), "Tags": (Tags, False), @@ -207,6 +218,7 @@ class HomeDirectoryMapEntry(AWSProperty): props: PropsDictType = { "Entry": (str, True), "Target": (str, True), + "Type": (str, False), } diff --git a/troposphere/verifiedpermissions.py b/troposphere/verifiedpermissions.py index 86e0f902d..369cedd3c 100644 --- a/troposphere/verifiedpermissions.py +++ b/troposphere/verifiedpermissions.py @@ -39,7 +39,7 @@ class IdentitySource(AWSObject): props: PropsDictType = { "Configuration": (IdentitySourceConfiguration, True), - "PolicyStoreId": (str, False), + "PolicyStoreId": (str, True), "PrincipalEntityType": (str, False), } @@ -98,7 +98,7 @@ class Policy(AWSObject): props: PropsDictType = { "Definition": (PolicyDefinition, True), - "PolicyStoreId": (str, False), + "PolicyStoreId": (str, True), } @@ -130,6 +130,7 @@ class PolicyStore(AWSObject): resource_type = "AWS::VerifiedPermissions::PolicyStore" props: PropsDictType = { + "Description": (str, False), "Schema": (SchemaDefinition, False), "ValidationSettings": (ValidationSettings, True), } @@ -144,7 +145,7 @@ class PolicyTemplate(AWSObject): props: PropsDictType = { "Description": (str, False), - "PolicyStoreId": (str, False), + "PolicyStoreId": (str, True), "Statement": (str, True), } diff --git a/troposphere/wafv2.py b/troposphere/wafv2.py index c53156c87..11570cfcc 100644 --- a/troposphere/wafv2.py +++ b/troposphere/wafv2.py @@ -38,30 +38,6 @@ class IPSet(AWSObject): } -class JsonMatchPattern(AWSProperty): - """ - `JsonMatchPattern `__ - """ - - props: PropsDictType = { - "All": (dict, False), - "IncludedPaths": ([str], False), - } - - -class JsonBody(AWSProperty): - """ - `JsonBody `__ - """ - - props: PropsDictType = { - "InvalidFallbackBehavior": (str, False), - "MatchPattern": (JsonMatchPattern, True), - "MatchScope": (str, True), - "OversizeHandling": (str, False), - } - - class SingleHeader(AWSProperty): """ `SingleHeader `__ @@ -78,7 +54,6 @@ class LoggingConfigurationFieldToMatch(AWSProperty): """ props: PropsDictType = { - "JsonBody": (JsonBody, False), "Method": (dict, False), "QueryString": (dict, False), "SingleHeader": (SingleHeader, False), @@ -397,6 +372,40 @@ class Headers(AWSProperty): } +class JA3Fingerprint(AWSProperty): + """ + `JA3Fingerprint `__ + """ + + props: PropsDictType = { + "FallbackBehavior": (str, True), + } + + +class JsonMatchPattern(AWSProperty): + """ + `JsonMatchPattern `__ + """ + + props: PropsDictType = { + "All": (dict, False), + "IncludedPaths": ([str], False), + } + + +class JsonBody(AWSProperty): + """ + `JsonBody `__ + """ + + props: PropsDictType = { + "InvalidFallbackBehavior": (str, False), + "MatchPattern": (JsonMatchPattern, True), + "MatchScope": (str, True), + "OversizeHandling": (str, False), + } + + class SingleQueryArgument(AWSProperty): """ `SingleQueryArgument `__ @@ -417,6 +426,7 @@ class FieldToMatch(AWSProperty): "Body": (Body, False), "Cookies": (Cookies, False), "Headers": (Headers, False), + "JA3Fingerprint": (JA3Fingerprint, False), "JsonBody": (JsonBody, False), "Method": (dict, False), "QueryString": (dict, False), @@ -803,6 +813,7 @@ class RateBasedStatement(AWSProperty): props: PropsDictType = { "AggregateKeyType": (str, True), "CustomKeys": ([RateBasedStatementCustomKey], False), + "EvaluationWindowSec": (integer, False), "ForwardedIPConfig": (ForwardedIPConfiguration, False), "Limit": (integer, True), "ScopeDownStatement": (validate_statement, False), @@ -1049,14 +1060,3 @@ class WebACLAssociation(AWSObject): "ResourceArn": (str, True), "WebACLArn": (str, True), } - - -class MatchPattern(AWSProperty): - """ - `MatchPattern `__ - """ - - props: PropsDictType = { - "All": (dict, False), - "IncludedPaths": ([str], False), - }