From c4383f82cfb72311094465a91711c3583a2d3f2f Mon Sep 17 00:00:00 2001 From: zipkid Date: Fri, 3 May 2024 13:12:41 +0000 Subject: [PATCH] Updates from spec version 172.0.0 --- troposphere/accessanalyzer.py | 23 +- troposphere/acmpca.py | 20 +- troposphere/amazonmq.py | 1 + troposphere/amplify.py | 24 + troposphere/apigateway.py | 8 +- troposphere/appconfig.py | 24 +- troposphere/appintegrations.py | 38 ++ troposphere/applicationautoscaling.py | 58 ++- troposphere/applicationinsights.py | 39 ++ troposphere/apprunner.py | 1 + troposphere/appstream.py | 1 + troposphere/appsync.py | 20 + troposphere/aps.py | 69 +++ troposphere/autoscaling.py | 17 +- troposphere/awslambda.py | 19 +- troposphere/backup.py | 73 +++ troposphere/batch.py | 117 ++++- troposphere/billingconductor.py | 1 + troposphere/cassandra.py | 64 +++ troposphere/cleanrooms.py | 93 +++- troposphere/cloud9.py | 2 +- troposphere/cloudfront.py | 36 ++ troposphere/cloudtrail.py | 25 +- troposphere/cloudwatch.py | 14 + troposphere/codeartifact.py | 53 +- troposphere/codebuild.py | 27 + troposphere/codecommit.py | 1 + troposphere/codedeploy.py | 25 + troposphere/codepipeline.py | 97 ++++ troposphere/codestarconnections.py | 35 ++ troposphere/cognito.py | 88 ++-- troposphere/config.py | 24 + troposphere/connect.py | 142 +++++- troposphere/connectcampaigns.py | 1 + troposphere/controltower.py | 56 ++- troposphere/customerprofiles.py | 6 +- troposphere/datasync.py | 45 +- troposphere/dlm.py | 53 ++ troposphere/dms.py | 335 ++++++++----- troposphere/docdb.py | 20 + troposphere/docdbelastic.py | 3 + troposphere/dynamodb.py | 62 +++ troposphere/ec2.py | 122 ++++- troposphere/ecr.py | 23 +- troposphere/ecs.py | 109 +++++ troposphere/efs.py | 12 + troposphere/eks.py | 68 +++ troposphere/elasticache.py | 72 +++ troposphere/elasticloadbalancingv2.py | 71 ++- troposphere/emr.py | 19 + troposphere/emrserverless.py | 76 +++ troposphere/entityresolution.py | 76 ++- troposphere/events.py | 11 + troposphere/firehose.py | 73 +++ troposphere/fis.py | 27 + troposphere/fms.py | 64 ++- troposphere/fsx.py | 18 +- troposphere/gamelift.py | 193 +++++++- troposphere/globalaccelerator.py | 27 + troposphere/glue.py | 55 +++ troposphere/grafana.py | 3 +- troposphere/guardduty.py | 33 +- troposphere/iam.py | 4 +- troposphere/imagebuilder.py | 173 +++++++ troposphere/inspectorv2.py | 83 ++++ troposphere/internetmonitor.py | 4 +- troposphere/iot.py | 40 ++ troposphere/iotsitewise.py | 52 +- troposphere/iottwinmaker.py | 28 ++ troposphere/iotwireless.py | 24 + troposphere/ivs.py | 82 +++- troposphere/kafkaconnect.py | 79 ++- troposphere/kendra.py | 1 + troposphere/kms.py | 1 + troposphere/lakeformation.py | 1 + troposphere/location.py | 43 +- troposphere/logs.py | 64 +++ troposphere/managedblockchain.py | 1 + troposphere/medialive.py | 244 ++++++++- troposphere/mediapackagev2.py | 39 +- troposphere/mediatailor.py | 12 + troposphere/msk.py | 11 + troposphere/mwaa.py | 1 + troposphere/networkfirewall.py | 78 ++- troposphere/oam.py | 24 +- troposphere/opensearchserverless.py | 16 + troposphere/opensearchservice.py | 12 + troposphere/osis.py | 26 +- troposphere/pinpoint.py | 5 +- troposphere/pipes.py | 48 ++ troposphere/quicksight.py | 680 +++++++++++++++++--------- troposphere/rds.py | 27 +- troposphere/redshift.py | 8 +- troposphere/redshiftserverless.py | 21 + troposphere/resiliencehub.py | 13 + troposphere/resourceexplorer2.py | 15 +- troposphere/route53.py | 26 + troposphere/route53resolver.py | 3 + troposphere/s3.py | 248 ++++++++-- troposphere/sagemaker.py | 441 ++++++++++++++++- troposphere/securityhub.py | 177 ++++++- troposphere/sns.py | 15 + troposphere/ssm.py | 1 + troposphere/timestream.py | 38 +- troposphere/transfer.py | 17 +- troposphere/verifiedpermissions.py | 31 +- troposphere/wafv2.py | 72 +-- troposphere/workspacesweb.py | 2 + 108 files changed, 5372 insertions(+), 671 deletions(-) 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..7691bc46d 100644 --- a/troposphere/acmpca.py +++ b/troposphere/acmpca.py @@ -45,7 +45,7 @@ class EdiPartyName(AWSProperty): """ props: PropsDictType = { - "NameAssigner": (str, True), + "NameAssigner": (str, False), "PartyName": (str, True), } @@ -250,14 +250,28 @@ 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), + "Enabled": (boolean, True), "ExpirationInDays": (integer, False), "S3BucketName": (str, False), "S3ObjectAcl": (str, False), @@ -270,7 +284,7 @@ class OcspConfiguration(AWSProperty): """ props: PropsDictType = { - "Enabled": (boolean, False), + "Enabled": (boolean, True), "OcspCustomCname": (str, 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..198eab12f 100644 --- a/troposphere/amplify.py +++ b/troposphere/amplify.py @@ -127,6 +127,17 @@ class Branch(AWSObject): } +class CertificateSettings(AWSProperty): + """ + `CertificateSettings `__ + """ + + props: PropsDictType = { + "CertificateType": (str, False), + "CustomCertificateArn": (str, False), + } + + class SubDomainSetting(AWSProperty): """ `SubDomainSetting `__ @@ -149,7 +160,20 @@ class Domain(AWSObject): "AppId": (str, True), "AutoSubDomainCreationPatterns": ([str], False), "AutoSubDomainIAMRole": (str, False), + "CertificateSettings": (CertificateSettings, False), "DomainName": (str, True), "EnableAutoSubDomain": (boolean, False), "SubDomainSettings": ([SubDomainSetting], True), } + + +class Certificate(AWSProperty): + """ + `Certificate `__ + """ + + props: PropsDictType = { + "CertificateArn": (str, False), + "CertificateType": (str, False), + "CertificateVerificationDNSRecord": (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..145509530 100644 --- a/troposphere/appconfig.py +++ b/troposphere/appconfig.py @@ -60,6 +60,18 @@ class ConfigurationProfile(AWSObject): } +class DynamicExtensionParameters(AWSProperty): + """ + `DynamicExtensionParameters `__ + """ + + props: PropsDictType = { + "ExtensionReference": (str, False), + "ParameterName": (str, False), + "ParameterValue": (str, False), + } + + class Deployment(AWSObject): """ `Deployment `__ @@ -73,6 +85,7 @@ class Deployment(AWSObject): "ConfigurationVersion": (str, True), "DeploymentStrategyId": (str, True), "Description": (str, False), + "DynamicExtensionParameters": ([DynamicExtensionParameters], False), "EnvironmentId": (str, True), "KmsKeyIdentifier": (str, False), "Tags": (Tags, False), @@ -98,13 +111,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 +132,7 @@ class Environment(AWSObject): props: PropsDictType = { "ApplicationId": (str, True), "Description": (str, False), - "Monitors": ([Monitors], False), + "Monitors": ([Monitor], False), "Name": (str, True), "Tags": (Tags, False), } @@ -132,6 +145,7 @@ class Parameter(AWSProperty): props: PropsDictType = { "Description": (str, False), + "Dynamic": (boolean, False), "Required": (boolean, True), } @@ -182,6 +196,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/appintegrations.py b/troposphere/appintegrations.py index 1c3004c48..5ccca7df2 100644 --- a/troposphere/appintegrations.py +++ b/troposphere/appintegrations.py @@ -9,6 +9,44 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags +class ExternalUrlConfig(AWSProperty): + """ + `ExternalUrlConfig `__ + """ + + props: PropsDictType = { + "AccessUrl": (str, True), + "ApprovedOrigins": ([str], False), + } + + +class ApplicationSourceConfig(AWSProperty): + """ + `ApplicationSourceConfig `__ + """ + + props: PropsDictType = { + "ExternalUrlConfig": (ExternalUrlConfig, True), + } + + +class Application(AWSObject): + """ + `Application `__ + """ + + resource_type = "AWS::AppIntegrations::Application" + + props: PropsDictType = { + "ApplicationSourceConfig": (ApplicationSourceConfig, True), + "Description": (str, True), + "Name": (str, True), + "Namespace": (str, False), + "Permissions": ([str], False), + "Tags": (Tags, False), + } + + class FileConfiguration(AWSProperty): """ `FileConfiguration `__ 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/applicationinsights.py b/troposphere/applicationinsights.py index 8a655f8ab..adda975a7 100644 --- a/troposphere/applicationinsights.py +++ b/troposphere/applicationinsights.py @@ -81,6 +81,40 @@ class Log(AWSProperty): } +class NetWeaverPrometheusExporter(AWSProperty): + """ + `NetWeaverPrometheusExporter `__ + """ + + props: PropsDictType = { + "InstanceNumbers": ([str], True), + "PrometheusPort": (str, False), + "SAPSID": (str, True), + } + + +class Process(AWSProperty): + """ + `Process `__ + """ + + props: PropsDictType = { + "AlarmMetrics": ([AlarmMetric], True), + "ProcessName": (str, True), + } + + +class SQLServerPrometheusExporter(AWSProperty): + """ + `SQLServerPrometheusExporter `__ + """ + + props: PropsDictType = { + "PrometheusPort": (str, True), + "SQLSecretName": (str, True), + } + + class WindowsEvent(AWSProperty): """ `WindowsEvent `__ @@ -106,6 +140,9 @@ class ConfigurationDetails(AWSProperty): "HANAPrometheusExporter": (HANAPrometheusExporter, False), "JMXPrometheusExporter": (JMXPrometheusExporter, False), "Logs": ([Log], False), + "NetWeaverPrometheusExporter": (NetWeaverPrometheusExporter, False), + "Processes": ([Process], False), + "SQLServerPrometheusExporter": (SQLServerPrometheusExporter, False), "WindowsEvents": ([WindowsEvent], False), } @@ -118,6 +155,7 @@ class SubComponentConfigurationDetails(AWSProperty): props: PropsDictType = { "AlarmMetrics": ([AlarmMetric], False), "Logs": ([Log], False), + "Processes": ([Process], False), "WindowsEvents": ([WindowsEvent], False), } @@ -201,6 +239,7 @@ class Application(AWSObject): resource_type = "AWS::ApplicationInsights::Application" props: PropsDictType = { + "AttachMissingPermission": (boolean, False), "AutoConfigurationEnabled": (boolean, False), "CWEMonitorEnabled": (boolean, False), "ComponentMonitoringSettings": ([ComponentMonitoringSetting], 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..ed4c4f443 100644 --- a/troposphere/aps.py +++ b/troposphere/aps.py @@ -24,6 +24,74 @@ class RuleGroupsNamespace(AWSObject): } +class AmpConfiguration(AWSProperty): + """ + `AmpConfiguration `__ + """ + + props: PropsDictType = { + "WorkspaceArn": (str, True), + } + + +class Destination(AWSProperty): + """ + `Destination `__ + """ + + props: PropsDictType = { + "AmpConfiguration": (AmpConfiguration, True), + } + + +class ScrapeConfiguration(AWSProperty): + """ + `ScrapeConfiguration `__ + """ + + props: PropsDictType = { + "ConfigurationBlob": (str, True), + } + + +class EksConfiguration(AWSProperty): + """ + `EksConfiguration `__ + """ + + props: PropsDictType = { + "ClusterArn": (str, True), + "SecurityGroupIds": ([str], False), + "SubnetIds": ([str], True), + } + + +class Source(AWSProperty): + """ + `Source `__ + """ + + props: PropsDictType = { + "EksConfiguration": (EksConfiguration, True), + } + + +class Scraper(AWSObject): + """ + `Scraper `__ + """ + + resource_type = "AWS::APS::Scraper" + + props: PropsDictType = { + "Alias": (str, False), + "Destination": (Destination, True), + "ScrapeConfiguration": (ScrapeConfiguration, True), + "Source": (Source, True), + "Tags": (Tags, False), + } + + class LoggingConfiguration(AWSProperty): """ `LoggingConfiguration `__ @@ -44,6 +112,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..7d9e0c686 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 `__ @@ -368,6 +444,7 @@ class EksContainerSecurityContext(AWSProperty): """ props: PropsDictType = { + "AllowPrivilegeEscalation": (boolean, False), "Privileged": (boolean, False), "ReadOnlyRootFilesystem": (boolean, False), "RunAsGroup": (integer, False), @@ -451,6 +528,16 @@ class EksVolume(AWSProperty): } +class ImagePullSecret(AWSProperty): + """ + `ImagePullSecret `__ + """ + + props: PropsDictType = { + "Name": (str, True), + } + + class Metadata(AWSProperty): """ `Metadata `__ @@ -470,8 +557,11 @@ class PodProperties(AWSProperty): "Containers": ([EksContainer], False), "DnsPolicy": (str, False), "HostNetwork": (boolean, False), + "ImagePullSecrets": ([ImagePullSecret], False), + "InitContainers": ([EksContainer], False), "Metadata": (Metadata, False), "ServiceAccountName": (str, False), + "ShareProcessNamespace": (boolean, False), "Volumes": ([EksVolume], False), } @@ -493,6 +583,8 @@ class NodeRangeProperty(AWSProperty): props: PropsDictType = { "Container": (ContainerProperties, False), + "EcsProperties": (EcsProperties, False), + "InstanceTypes": ([str], False), "TargetNodes": (str, True), } @@ -552,6 +644,7 @@ class JobDefinition(AWSObject): props: PropsDictType = { "ContainerProperties": (ContainerProperties, False), + "EcsProperties": (EcsProperties, False), "EksProperties": (EksProperties, False), "JobDefinitionName": (str, False), "NodeProperties": (NodeProperties, False), @@ -577,6 +670,19 @@ class ComputeEnvironmentOrder(AWSProperty): } +class JobStateTimeLimitAction(AWSProperty): + """ + `JobStateTimeLimitAction `__ + """ + + props: PropsDictType = { + "Action": (str, True), + "MaxTimeSeconds": (integer, True), + "Reason": (str, True), + "State": (str, True), + } + + class JobQueue(AWSObject): """ `JobQueue `__ @@ -587,6 +693,7 @@ class JobQueue(AWSObject): props: PropsDictType = { "ComputeEnvironmentOrder": ([ComputeEnvironmentOrder], True), "JobQueueName": (str, False), + "JobStateTimeLimitActions": ([JobStateTimeLimitAction], False), "Priority": (integer, True), "SchedulingPolicyArn": (str, False), "State": (validate_queue_state, 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..ebd0e979c 100644 --- a/troposphere/cleanrooms.py +++ b/troposphere/cleanrooms.py @@ -7,7 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags -from .validators import boolean, double +from .validators import boolean, double, integer class AnalysisParameter(AWSProperty): @@ -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), @@ -133,6 +155,26 @@ class AnalysisRuleAggregation(AWSProperty): } +class DifferentialPrivacyColumn(AWSProperty): + """ + `DifferentialPrivacyColumn `__ + """ + + props: PropsDictType = { + "Name": (str, True), + } + + +class DifferentialPrivacy(AWSProperty): + """ + `DifferentialPrivacy `__ + """ + + props: PropsDictType = { + "Columns": ([DifferentialPrivacyColumn], True), + } + + class AnalysisRuleCustom(AWSProperty): """ `AnalysisRuleCustom `__ @@ -141,6 +183,7 @@ class AnalysisRuleCustom(AWSProperty): props: PropsDictType = { "AllowedAnalyses": ([str], True), "AllowedAnalysisProviders": ([str], False), + "DifferentialPrivacy": (DifferentialPrivacy, False), } @@ -245,6 +288,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,11 +354,39 @@ class Membership(AWSObject): MembershipProtectedQueryResultConfiguration, False, ), + "PaymentConfiguration": (MembershipPaymentConfiguration, False), "QueryLogStatus": (str, True), "Tags": (Tags, False), } +class Parameters(AWSProperty): + """ + `Parameters `__ + """ + + props: PropsDictType = { + "Epsilon": (integer, True), + "UsersNoisePerQuery": (integer, True), + } + + +class PrivacyBudgetTemplate(AWSObject): + """ + `PrivacyBudgetTemplate `__ + """ + + resource_type = "AWS::CleanRooms::PrivacyBudgetTemplate" + + props: PropsDictType = { + "AutoRefresh": (str, True), + "MembershipIdentifier": (str, True), + "Parameters": (Parameters, True), + "PrivacyBudgetType": (str, True), + "Tags": (Tags, False), + } + + class AnalysisSchema(AWSProperty): """ `AnalysisSchema `__ 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/cloudwatch.py b/troposphere/cloudwatch.py index 89f98b184..2a6b92fdf 100644 --- a/troposphere/cloudwatch.py +++ b/troposphere/cloudwatch.py @@ -94,6 +94,7 @@ class Alarm(AWSObject): "OKActions": ([str], False), "Period": (integer, False), "Statistic": (str, False), + "Tags": (Tags, False), "Threshold": (double, False), "ThresholdMetricId": (str, False), "TreatMissingData": (validate_treat_missing_data, False), @@ -126,6 +127,16 @@ class Configuration(AWSProperty): } +class MetricCharacteristics(AWSProperty): + """ + `MetricCharacteristics `__ + """ + + props: PropsDictType = { + "PeriodicSpikes": (boolean, False), + } + + class MetricMathAnomalyDetector(AWSProperty): """ `MetricMathAnomalyDetector `__ @@ -142,6 +153,7 @@ class SingleMetricAnomalyDetector(AWSProperty): """ props: PropsDictType = { + "AccountId": (str, False), "Dimensions": ([MetricDimension], False), "MetricName": (str, False), "Namespace": (str, False), @@ -159,6 +171,7 @@ class AnomalyDetector(AWSObject): props: PropsDictType = { "Configuration": (Configuration, False), "Dimensions": ([MetricDimension], False), + "MetricCharacteristics": (MetricCharacteristics, False), "MetricMathAnomalyDetector": (MetricMathAnomalyDetector, False), "MetricName": (str, False), "Namespace": (str, False), @@ -185,6 +198,7 @@ class CompositeAlarm(AWSObject): "AlarmRule": (str, True), "InsufficientDataActions": ([str], False), "OKActions": ([str], False), + "Tags": (Tags, False), } diff --git a/troposphere/codeartifact.py b/troposphere/codeartifact.py index 8d9c41efd..40402d3da 100644 --- a/troposphere/codeartifact.py +++ b/troposphere/codeartifact.py @@ -6,7 +6,7 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, PropsDictType, Tags +from . import AWSObject, AWSProperty, PropsDictType, Tags from .validators.codeartifact import policytypes @@ -25,6 +25,57 @@ class Domain(AWSObject): } +class RestrictionType(AWSProperty): + """ + `RestrictionType `__ + """ + + props: PropsDictType = { + "Repositories": ([str], False), + "RestrictionMode": (str, True), + } + + +class Restrictions(AWSProperty): + """ + `Restrictions `__ + """ + + props: PropsDictType = { + "ExternalUpstream": (RestrictionType, False), + "InternalUpstream": (RestrictionType, False), + "Publish": (RestrictionType, False), + } + + +class OriginConfiguration(AWSProperty): + """ + `OriginConfiguration `__ + """ + + props: PropsDictType = { + "Restrictions": (Restrictions, True), + } + + +class PackageGroup(AWSObject): + """ + `PackageGroup `__ + """ + + resource_type = "AWS::CodeArtifact::PackageGroup" + + props: PropsDictType = { + "ContactInfo": (str, False), + "Description": (str, False), + "DomainName": (str, True), + "DomainOwner": (str, False), + "OriginConfiguration": (OriginConfiguration, False), + "Pattern": (str, True), + "Tags": (Tags, False), + } + + class Repository(AWSObject): """ `Repository `__ 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..a8e1bcac8 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 `__ @@ -162,6 +242,7 @@ class Actions(AWSProperty): "Region": (str, False), "RoleArn": (str, False), "RunOrder": (integer, False), + "TimeoutInMinutes": (integer, False), } @@ -188,6 +269,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 +292,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..8c41a3209 100644 --- a/troposphere/codestarconnections.py +++ b/troposphere/codestarconnections.py @@ -23,3 +23,38 @@ 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), + "PublishDeploymentStatus": (str, False), + "RepositoryLinkId": (str, True), + "ResourceName": (str, True), + "RoleArn": (str, True), + "SyncType": (str, True), + "TriggerResourceUpdateOn": (str, False), + } 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..0559aadd9 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), } @@ -520,6 +593,17 @@ class SecurityKey(AWSObject): } +class Application(AWSProperty): + """ + `Application `__ + """ + + props: PropsDictType = { + "ApplicationPermissions": ([str], True), + "Namespace": (str, True), + } + + class SecurityProfile(AWSObject): """ `SecurityProfile `__ @@ -528,8 +612,11 @@ class SecurityProfile(AWSObject): resource_type = "AWS::Connect::SecurityProfile" props: PropsDictType = { + "AllowedAccessControlHierarchyGroupId": (str, False), "AllowedAccessControlTags": (Tags, False), + "Applications": ([Application], False), "Description": (str, False), + "HierarchyRestrictedResources": ([str], False), "InstanceArn": (str, True), "Permissions": ([str], False), "SecurityProfileName": (str, True), @@ -538,16 +625,6 @@ class SecurityProfile(AWSObject): } -class FieldIdentifier(AWSProperty): - """ - `FieldIdentifier `__ - """ - - props: PropsDictType = { - "Name": (str, True), - } - - class InvisibleFieldInfo(AWSProperty): """ `InvisibleFieldInfo `__ @@ -601,19 +678,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 +741,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 +770,7 @@ class User(AWSObject): "RoutingProfileArn": (str, True), "SecurityProfileArns": ([str], True), "Tags": (Tags, False), + "UserProficiencies": ([UserProficiency], False), "Username": (str, True), } @@ -742,3 +819,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/connectcampaigns.py b/troposphere/connectcampaigns.py index c4c619275..0ee00c2e8 100644 --- a/troposphere/connectcampaigns.py +++ b/troposphere/connectcampaigns.py @@ -60,6 +60,7 @@ class AnswerMachineDetectionConfig(AWSProperty): """ props: PropsDictType = { + "AwaitAnswerMachinePrompt": (boolean, False), "EnableAnswerMachineDetection": (boolean, True), } 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/datasync.py b/troposphere/datasync.py index 9bca4d9c5..1d476f519 100644 --- a/troposphere/datasync.py +++ b/troposphere/datasync.py @@ -403,6 +403,41 @@ class FilterRule(AWSProperty): } +class ManifestConfigSourceS3(AWSProperty): + """ + `ManifestConfigSourceS3 `__ + """ + + props: PropsDictType = { + "BucketAccessRoleArn": (str, False), + "ManifestObjectPath": (str, False), + "ManifestObjectVersionId": (str, False), + "S3BucketArn": (str, False), + } + + +class Source(AWSProperty): + """ + `Source `__ + """ + + props: PropsDictType = { + "S3": (ManifestConfigSourceS3, False), + } + + +class ManifestConfig(AWSProperty): + """ + `ManifestConfig `__ + """ + + props: PropsDictType = { + "Action": (str, False), + "Format": (str, False), + "Source": (Source, True), + } + + class Options(AWSProperty): """ `Options `__ @@ -427,9 +462,9 @@ class Options(AWSProperty): } -class S3(AWSProperty): +class TaskReportConfigDestinationS3(AWSProperty): """ - `S3 `__ + `TaskReportConfigDestinationS3 `__ """ props: PropsDictType = { @@ -445,7 +480,7 @@ class Destination(AWSProperty): """ props: PropsDictType = { - "S3": (S3, False), + "S3": (TaskReportConfigDestinationS3, False), } @@ -522,7 +557,8 @@ class TaskSchedule(AWSProperty): """ props: PropsDictType = { - "ScheduleExpression": (str, True), + "ScheduleExpression": (str, False), + "Status": (str, False), } @@ -538,6 +574,7 @@ class Task(AWSObject): "DestinationLocationArn": (str, True), "Excludes": ([FilterRule], False), "Includes": ([FilterRule], False), + "ManifestConfig": (ManifestConfig, False), "Name": (str, False), "Options": (Options, False), "Schedule": (TaskSchedule, 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/docdbelastic.py b/troposphere/docdbelastic.py index 4abbf2a87..fdded788c 100644 --- a/troposphere/docdbelastic.py +++ b/troposphere/docdbelastic.py @@ -21,11 +21,14 @@ class Cluster(AWSObject): "AdminUserName": (str, True), "AdminUserPassword": (str, False), "AuthType": (str, True), + "BackupRetentionPeriod": (integer, False), "ClusterName": (str, True), "KmsKeyId": (str, False), + "PreferredBackupWindow": (str, False), "PreferredMaintenanceWindow": (str, False), "ShardCapacity": (integer, True), "ShardCount": (integer, True), + "ShardInstanceCount": (integer, False), "SubnetIds": ([str], False), "Tags": (Tags, False), "VpcSecurityGroupIds": ([str], False), diff --git a/troposphere/dynamodb.py b/troposphere/dynamodb.py index 1b34da7ec..3b971319d 100644 --- a/troposphere/dynamodb.py +++ b/troposphere/dynamodb.py @@ -51,6 +51,16 @@ class Projection(AWSProperty): } +class WriteOnDemandThroughputSettings(AWSProperty): + """ + `WriteOnDemandThroughputSettings `__ + """ + + props: PropsDictType = { + "MaxWriteRequestUnits": (integer, False), + } + + class TargetTrackingScalingPolicyConfiguration(AWSProperty): """ `TargetTrackingScalingPolicyConfiguration `__ @@ -99,6 +109,7 @@ class GlobalTableGlobalSecondaryIndex(AWSProperty): "IndexName": (str, True), "KeySchema": ([KeySchema], True), "Projection": (Projection, True), + "WriteOnDemandThroughputSettings": (WriteOnDemandThroughputSettings, False), "WriteProvisionedThroughputSettings": ( WriteProvisionedThroughputSettings, False, @@ -145,6 +156,7 @@ class KinesisStreamSpecification(AWSProperty): """ props: PropsDictType = { + "ApproximateCreationDateTimePrecision": (str, False), "StreamArn": (str, True), } @@ -159,6 +171,16 @@ class PointInTimeRecoverySpecification(AWSProperty): } +class ReadOnDemandThroughputSettings(AWSProperty): + """ + `ReadOnDemandThroughputSettings `__ + """ + + props: PropsDictType = { + "MaxReadRequestUnits": (integer, False), + } + + class ReadProvisionedThroughputSettings(AWSProperty): """ `ReadProvisionedThroughputSettings `__ @@ -178,6 +200,7 @@ class ReplicaGlobalSecondaryIndexSpecification(AWSProperty): props: PropsDictType = { "ContributorInsightsSpecification": (ContributorInsightsSpecification, False), "IndexName": (str, True), + "ReadOnDemandThroughputSettings": (ReadOnDemandThroughputSettings, False), "ReadProvisionedThroughputSettings": (ReadProvisionedThroughputSettings, False), } @@ -192,6 +215,26 @@ class ReplicaSSESpecification(AWSProperty): } +class ResourcePolicy(AWSProperty): + """ + `ResourcePolicy `__ + """ + + props: PropsDictType = { + "PolicyDocument": (dict, True), + } + + +class ReplicaStreamSpecification(AWSProperty): + """ + `ReplicaStreamSpecification `__ + """ + + props: PropsDictType = { + "ResourcePolicy": (ResourcePolicy, True), + } + + class ReplicaSpecification(AWSProperty): """ `ReplicaSpecification `__ @@ -203,8 +246,11 @@ class ReplicaSpecification(AWSProperty): "GlobalSecondaryIndexes": ([ReplicaGlobalSecondaryIndexSpecification], False), "KinesisStreamSpecification": (KinesisStreamSpecification, False), "PointInTimeRecoverySpecification": (PointInTimeRecoverySpecification, False), + "ReadOnDemandThroughputSettings": (ReadOnDemandThroughputSettings, False), "ReadProvisionedThroughputSettings": (ReadProvisionedThroughputSettings, False), "Region": (str, True), + "ReplicaStreamSpecification": (ReplicaStreamSpecification, False), + "ResourcePolicy": (ResourcePolicy, False), "SSESpecification": (ReplicaSSESpecification, False), "TableClass": (str, False), "Tags": (Tags, False), @@ -217,6 +263,7 @@ class StreamSpecification(AWSProperty): """ props: PropsDictType = { + "ResourcePolicy": (ResourcePolicy, False), "StreamViewType": (str, True), } @@ -250,6 +297,7 @@ class GlobalTable(AWSObject): "StreamSpecification": (StreamSpecification, False), "TableName": (str, False), "TimeToLiveSpecification": (TimeToLiveSpecification, False), + "WriteOnDemandThroughputSettings": (WriteOnDemandThroughputSettings, False), "WriteProvisionedThroughputSettings": ( WriteProvisionedThroughputSettings, False, @@ -257,6 +305,17 @@ class GlobalTable(AWSObject): } +class OnDemandThroughput(AWSProperty): + """ + `OnDemandThroughput `__ + """ + + props: PropsDictType = { + "MaxReadRequestUnits": (integer, False), + "MaxWriteRequestUnits": (integer, False), + } + + class ProvisionedThroughput(AWSProperty): """ `ProvisionedThroughput `__ @@ -277,6 +336,7 @@ class GlobalSecondaryIndex(AWSProperty): "ContributorInsightsSpecification": (ContributorInsightsSpecification, False), "IndexName": (str, True), "KeySchema": ([KeySchema], True), + "OnDemandThroughput": (OnDemandThroughput, False), "Projection": (Projection, True), "ProvisionedThroughput": (ProvisionedThroughput, False), } @@ -357,8 +417,10 @@ class Table(AWSObject): "KeySchema": ([KeySchema], True), "KinesisStreamSpecification": (KinesisStreamSpecification, False), "LocalSecondaryIndexes": ([LocalSecondaryIndex], False), + "OnDemandThroughput": (OnDemandThroughput, False), "PointInTimeRecoverySpecification": (PointInTimeRecoverySpecification, False), "ProvisionedThroughput": (ProvisionedThroughput, False), + "ResourcePolicy": (ResourcePolicy, False), "SSESpecification": (SSESpecification, False), "StreamSpecification": (StreamSpecification, False), "TableClass": (table_class_validator, False), diff --git a/troposphere/ec2.py b/troposphere/ec2.py index 14cc289a0..a2b46d602 100644 --- a/troposphere/ec2.py +++ b/troposphere/ec2.py @@ -279,7 +279,8 @@ class CustomerGateway(AWSObject): resource_type = "AWS::EC2::CustomerGateway" props: PropsDictType = { - "BgpAsn": (integer, True), + "BgpAsn": (integer, False), + "CertificateArn": (str, False), "DeviceName": (str, False), "IpAddress": (str, True), "Tags": (validate_tags_or_list, False), @@ -297,6 +298,7 @@ class DHCPOptions(AWSObject): props: PropsDictType = { "DomainName": (str, False), "DomainNameServers": ([str], False), + "Ipv6AddressPreferredLeaseTime": (integer, False), "NetbiosNameServers": ([str], False), "NetbiosNodeType": (integer, False), "NtpServers": ([str], False), @@ -423,6 +425,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 +741,7 @@ class IPAM(AWSObject): "Description": (str, False), "OperatingRegions": ([IpamOperatingRegion], False), "Tags": (Tags, False), + "Tier": (str, False), } @@ -766,6 +770,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 +805,7 @@ class IPAMPool(AWSObject): "PublicIpSource": (str, False), "PubliclyAdvertisable": (boolean, False), "SourceIpamPoolId": (str, False), + "SourceResource": (SourceResource, False), "Tags": (Tags, False), } @@ -867,7 +885,7 @@ class EBSBlockDevice(AWSProperty): class BlockDeviceMapping(AWSProperty): """ - `BlockDeviceMapping `__ + `BlockDeviceMapping `__ """ props: PropsDictType = { @@ -986,7 +1004,7 @@ class PrivateIpAddressSpecification(AWSProperty): class NetworkInterfaceProperty(AWSProperty): """ - `NetworkInterfaceProperty `__ + `NetworkInterfaceProperty `__ """ props: PropsDictType = { @@ -1020,7 +1038,7 @@ class PrivateDnsNameOptions(AWSProperty): class AssociationParameters(AWSProperty): """ - `AssociationParameters `__ + `AssociationParameters `__ """ props: PropsDictType = { @@ -1031,7 +1049,7 @@ class AssociationParameters(AWSProperty): class SsmAssociations(AWSProperty): """ - `SsmAssociations `__ + `SsmAssociations `__ """ props: PropsDictType = { @@ -1042,7 +1060,7 @@ class SsmAssociations(AWSProperty): class Instance(AWSObject): """ - `Instance `__ + `Instance `__ """ resource_type = "AWS::EC2::Instance" @@ -1312,6 +1330,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), @@ -1392,6 +1411,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 +1482,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 +1852,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 +1881,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 +1952,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 +1967,7 @@ class Route(AWSObject): props: PropsDictType = { "CarrierGatewayId": (str, False), + "CoreNetworkArn": (str, False), "DestinationCidrBlock": (str, False), "DestinationIpv6CidrBlock": (str, False), "DestinationPrefixListId": (str, False), @@ -1945,7 +2002,7 @@ class RouteTable(AWSObject): class SecurityGroup(AWSObject): """ - `SecurityGroup `__ + `SecurityGroup `__ """ resource_type = "AWS::EC2::SecurityGroup" @@ -1962,7 +2019,7 @@ class SecurityGroup(AWSObject): class SecurityGroupEgress(AWSObject): """ - `SecurityGroupEgress `__ + `SecurityGroupEgress `__ """ resource_type = "AWS::EC2::SecurityGroupEgress" @@ -1985,7 +2042,7 @@ def validate(self): class SecurityGroupIngress(AWSObject): """ - `SecurityGroupIngress `__ + `SecurityGroupIngress `__ """ resource_type = "AWS::EC2::SecurityGroupIngress" @@ -2009,6 +2066,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 +2351,14 @@ class Subnet(AWSObject): "AvailabilityZoneId": (str, False), "CidrBlock": (str, False), "EnableDns64": (boolean, False), + "EnableLniAtDeviceIndex": (integer, 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 +2378,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 +2839,7 @@ class VPCEndpointServicePermissions(AWSObject): class VPCGatewayAttachment(AWSObject): """ - `VPCGatewayAttachment `__ + `VPCGatewayAttachment `__ """ resource_type = "AWS::EC2::VPCGatewayAttachment" @@ -3027,6 +3104,7 @@ class DeviceOptions(AWSProperty): """ props: PropsDictType = { + "PublicSigningKeyUrl": (str, False), "TenantId": (str, False), } @@ -3121,7 +3199,7 @@ class EbsBlockDevice(AWSProperty): class Egress(AWSProperty): """ - `Egress `__ + `Egress `__ """ props: PropsDictType = { @@ -3138,7 +3216,7 @@ class Egress(AWSProperty): class Ingress(AWSProperty): """ - `Ingress `__ + `Ingress `__ """ props: PropsDictType = { @@ -3157,7 +3235,7 @@ class Ingress(AWSProperty): class MountPoint(AWSProperty): """ - `MountPoint `__ + `MountPoint `__ """ props: PropsDictType = { @@ -3166,14 +3244,6 @@ class MountPoint(AWSProperty): } -class NoDevice(AWSProperty): - """ - `NoDevice `__ - """ - - props: PropsDictType = {} - - class PeeringAttachmentStatus(AWSProperty): """ `PeeringAttachmentStatus `__ @@ -3187,7 +3257,7 @@ class PeeringAttachmentStatus(AWSProperty): class SecurityGroupRule(AWSProperty): """ - `SecurityGroupRule `__ + `SecurityGroupRule `__ """ props: PropsDictType = { @@ -3224,7 +3294,7 @@ class TransitGatewayRouteTableRoute(AWSProperty): class VolumeProperty(AWSProperty): """ - `VolumeProperty `__ + `VolumeProperty `__ """ props: PropsDictType = { diff --git a/troposphere/ecr.py b/troposphere/ecr.py index 9b95c3638..e25f58d95 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), } @@ -122,7 +124,7 @@ class ReplicationConfiguration(AWSObject): class EncryptionConfiguration(AWSProperty): """ - `EncryptionConfiguration `__ + `EncryptionConfiguration `__ """ props: PropsDictType = { @@ -169,3 +171,22 @@ class Repository(AWSObject): "RepositoryPolicyText": (policytypes, False), "Tags": (Tags, False), } + + +class RepositoryCreationTemplate(AWSObject): + """ + `RepositoryCreationTemplate `__ + """ + + resource_type = "AWS::ECR::RepositoryCreationTemplate" + + props: PropsDictType = { + "AppliedFor": ([str], True), + "Description": (str, False), + "EncryptionConfiguration": (EncryptionConfiguration, False), + "ImageTagMutability": (str, False), + "LifecyclePolicy": (str, False), + "Prefix": (str, True), + "RepositoryPolicy": (str, False), + "ResourceTags": (Tags, False), + } diff --git a/troposphere/ecs.py b/troposphere/ecs.py index b6531ba20..b94cd0b57 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), @@ -741,6 +821,29 @@ class EFSVolumeConfiguration(AWSProperty): } +class FSxAuthorizationConfig(AWSProperty): + """ + `FSxAuthorizationConfig `__ + """ + + props: PropsDictType = { + "CredentialsParameter": (str, True), + "Domain": (str, True), + } + + +class FSxWindowsFileServerVolumeConfiguration(AWSProperty): + """ + `FSxWindowsFileServerVolumeConfiguration `__ + """ + + props: PropsDictType = { + "AuthorizationConfig": (FSxAuthorizationConfig, False), + "FileSystemId": (str, True), + "RootDirectory": (str, True), + } + + class Host(AWSProperty): """ `Host `__ @@ -757,8 +860,13 @@ class Volume(AWSProperty): """ props: PropsDictType = { + "ConfiguredAtLaunch": (boolean, False), "DockerVolumeConfiguration": (DockerVolumeConfiguration, False), "EFSVolumeConfiguration": (EFSVolumeConfiguration, False), + "FSxWindowsFileServerVolumeConfiguration": ( + FSxWindowsFileServerVolumeConfiguration, + False, + ), "Host": (Host, False), "Name": (str, False), } @@ -820,5 +928,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..54e390964 100644 --- a/troposphere/elasticache.py +++ b/troposphere/elasticache.py @@ -263,6 +263,78 @@ class SecurityGroupIngress(AWSObject): } +class DataStorage(AWSProperty): + """ + `DataStorage `__ + """ + + props: PropsDictType = { + "Maximum": (integer, False), + "Minimum": (integer, False), + "Unit": (str, True), + } + + +class ECPUPerSecond(AWSProperty): + """ + `ECPUPerSecond `__ + """ + + props: PropsDictType = { + "Maximum": (integer, False), + "Minimum": (integer, False), + } + + +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/entityresolution.py b/troposphere/entityresolution.py index 9e735cef6..513ee890b 100644 --- a/troposphere/entityresolution.py +++ b/troposphere/entityresolution.py @@ -50,7 +50,8 @@ class IdMappingWorkflowInputSource(AWSProperty): props: PropsDictType = { "InputSourceARN": (str, True), - "SchemaArn": (str, True), + "SchemaArn": (str, False), + "Type": (str, False), } @@ -76,13 +77,67 @@ class IdMappingWorkflow(AWSObject): "Description": (str, False), "IdMappingTechniques": (IdMappingTechniques, True), "InputSourceConfig": ([IdMappingWorkflowInputSource], True), - "OutputSourceConfig": ([IdMappingWorkflowOutputSource], True), + "OutputSourceConfig": ([IdMappingWorkflowOutputSource], False), "RoleArn": (str, True), "Tags": (Tags, False), "WorkflowName": (str, True), } +class NamespaceProviderProperties(AWSProperty): + """ + `NamespaceProviderProperties `__ + """ + + props: PropsDictType = { + "ProviderConfiguration": (dict, False), + "ProviderServiceArn": (str, True), + } + + +class IdNamespaceIdMappingWorkflowProperties(AWSProperty): + """ + `IdNamespaceIdMappingWorkflowProperties `__ + """ + + props: PropsDictType = { + "IdMappingType": (str, True), + "ProviderProperties": (NamespaceProviderProperties, False), + } + + +class IdNamespaceInputSource(AWSProperty): + """ + `IdNamespaceInputSource `__ + """ + + props: PropsDictType = { + "InputSourceARN": (str, True), + "SchemaName": (str, False), + } + + +class IdNamespace(AWSObject): + """ + `IdNamespace `__ + """ + + resource_type = "AWS::EntityResolution::IdNamespace" + + props: PropsDictType = { + "Description": (str, False), + "IdMappingWorkflowProperties": ( + [IdNamespaceIdMappingWorkflowProperties], + False, + ), + "IdNamespaceName": (str, True), + "InputSourceConfig": ([IdNamespaceInputSource], False), + "RoleArn": (str, False), + "Tags": (Tags, False), + "Type": (str, True), + } + + class InputSource(AWSProperty): """ `InputSource `__ @@ -171,6 +226,23 @@ class MatchingWorkflow(AWSObject): } +class PolicyStatement(AWSObject): + """ + `PolicyStatement `__ + """ + + resource_type = "AWS::EntityResolution::PolicyStatement" + + props: PropsDictType = { + "Action": ([str], False), + "Arn": (str, True), + "Condition": (str, False), + "Effect": (str, False), + "Principal": ([str], False), + "StatementId": (str, True), + } + + class SchemaInputAttribute(AWSProperty): """ `SchemaInputAttribute `__ 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/fms.py b/troposphere/fms.py index 3ac33fe4e..470c5543e 100644 --- a/troposphere/fms.py +++ b/troposphere/fms.py @@ -7,7 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags -from .validators import boolean +from .validators import boolean, integer from .validators.fms import validate_json_checker @@ -35,6 +35,67 @@ class IEMap(AWSProperty): } +class IcmpTypeCode(AWSProperty): + """ + `IcmpTypeCode `__ + """ + + props: PropsDictType = { + "Code": (integer, True), + "Type": (integer, True), + } + + +class PortRange(AWSProperty): + """ + `PortRange `__ + """ + + props: PropsDictType = { + "From": (integer, True), + "To": (integer, True), + } + + +class NetworkAclEntry(AWSProperty): + """ + `NetworkAclEntry `__ + """ + + props: PropsDictType = { + "CidrBlock": (str, False), + "Egress": (boolean, True), + "IcmpTypeCode": (IcmpTypeCode, False), + "Ipv6CidrBlock": (str, False), + "PortRange": (PortRange, False), + "Protocol": (str, True), + "RuleAction": (str, True), + } + + +class NetworkAclEntrySet(AWSProperty): + """ + `NetworkAclEntrySet `__ + """ + + props: PropsDictType = { + "FirstEntries": ([NetworkAclEntry], False), + "ForceRemediateForFirstEntries": (boolean, True), + "ForceRemediateForLastEntries": (boolean, True), + "LastEntries": ([NetworkAclEntry], False), + } + + +class NetworkAclCommonPolicy(AWSProperty): + """ + `NetworkAclCommonPolicy `__ + """ + + props: PropsDictType = { + "NetworkAclEntrySet": (NetworkAclEntrySet, True), + } + + class NetworkFirewallPolicy(AWSProperty): """ `NetworkFirewallPolicy `__ @@ -61,6 +122,7 @@ class PolicyOption(AWSProperty): """ props: PropsDictType = { + "NetworkAclCommonPolicy": (NetworkAclCommonPolicy, False), "NetworkFirewallPolicy": (NetworkFirewallPolicy, False), "ThirdPartyFirewallPolicy": (ThirdPartyFirewallPolicy, False), } 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..6f026f88d 100644 --- a/troposphere/gamelift.py +++ b/troposphere/gamelift.py @@ -65,6 +65,115 @@ class Build(AWSObject): } +class ContainerDependency(AWSProperty): + """ + `ContainerDependency `__ + """ + + props: PropsDictType = { + "Condition": (str, True), + "ContainerName": (str, True), + } + + +class ContainerEnvironment(AWSProperty): + """ + `ContainerEnvironment `__ + """ + + props: PropsDictType = { + "Name": (str, True), + "Value": (str, True), + } + + +class ContainerHealthCheck(AWSProperty): + """ + `ContainerHealthCheck `__ + """ + + props: PropsDictType = { + "Command": ([str], True), + "Interval": (integer, False), + "Retries": (integer, False), + "StartPeriod": (integer, False), + "Timeout": (integer, False), + } + + +class MemoryLimits(AWSProperty): + """ + `MemoryLimits `__ + """ + + props: PropsDictType = { + "HardLimit": (integer, False), + "SoftLimit": (integer, False), + } + + +class ContainerPortRange(AWSProperty): + """ + `ContainerPortRange `__ + """ + + props: PropsDictType = { + "FromPort": (integer, True), + "Protocol": (str, True), + "ToPort": (integer, True), + } + + +class PortConfiguration(AWSProperty): + """ + `PortConfiguration `__ + """ + + props: PropsDictType = { + "ContainerPortRanges": ([ContainerPortRange], True), + } + + +class ContainerDefinition(AWSProperty): + """ + `ContainerDefinition `__ + """ + + props: PropsDictType = { + "Command": ([str], False), + "ContainerName": (str, True), + "Cpu": (integer, False), + "DependsOn": ([ContainerDependency], False), + "EntryPoint": ([str], False), + "Environment": ([ContainerEnvironment], False), + "Essential": (boolean, False), + "HealthCheck": (ContainerHealthCheck, False), + "ImageUri": (str, True), + "MemoryLimits": (MemoryLimits, False), + "PortConfiguration": (PortConfiguration, False), + "ResolvedImageDigest": (str, False), + "WorkingDirectory": (str, False), + } + + +class ContainerGroupDefinition(AWSObject): + """ + `ContainerGroupDefinition `__ + """ + + resource_type = "AWS::GameLift::ContainerGroupDefinition" + + props: PropsDictType = { + "ContainerDefinitions": ([ContainerDefinition], True), + "Name": (str, True), + "OperatingSystem": (str, True), + "SchedulingStrategy": (str, False), + "Tags": (Tags, False), + "TotalCpuLimit": (integer, True), + "TotalMemoryLimit": (integer, True), + } + + class AnywhereConfiguration(AWSProperty): """ `AnywhereConfiguration `__ @@ -85,6 +194,40 @@ class CertificateConfiguration(AWSProperty): } +class ConnectionPortRange(AWSProperty): + """ + `ConnectionPortRange `__ + """ + + props: PropsDictType = { + "FromPort": (integer, True), + "ToPort": (integer, True), + } + + +class ContainerGroupsPerInstance(AWSProperty): + """ + `ContainerGroupsPerInstance `__ + """ + + props: PropsDictType = { + "DesiredReplicaContainerGroupsPerInstance": (integer, False), + "MaxReplicaContainerGroupsPerInstance": (integer, False), + } + + +class ContainerGroupsConfiguration(AWSProperty): + """ + `ContainerGroupsConfiguration `__ + """ + + props: PropsDictType = { + "ConnectionPortRange": (ConnectionPortRange, True), + "ContainerGroupDefinitionNames": ([str], True), + "ContainerGroupsPerInstance": (ContainerGroupsPerInstance, False), + } + + class IpPermission(AWSProperty): """ `IpPermission `__ @@ -156,6 +299,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,9 +339,11 @@ class Fleet(AWSObject): props: PropsDictType = { "AnywhereConfiguration": (AnywhereConfiguration, False), + "ApplyCapacity": (str, False), "BuildId": (str, False), "CertificateConfiguration": (CertificateConfiguration, False), "ComputeType": (str, False), + "ContainerGroupsConfiguration": (ContainerGroupsConfiguration, False), "Description": (str, False), "DesiredEC2Instances": (integer, False), "EC2InboundPermissions": ([IpPermission], False), @@ -185,6 +361,7 @@ class Fleet(AWSObject): "PeerVpcId": (str, False), "ResourceCreationLimitPolicy": (ResourceCreationLimitPolicy, False), "RuntimeConfiguration": (RuntimeConfiguration, False), + "ScalingPolicies": ([ScalingPolicy], False), "ScriptId": (str, False), } @@ -256,23 +433,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 +484,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 +531,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 +541,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..804ad1c73 100644 --- a/troposphere/globalaccelerator.py +++ b/troposphere/globalaccelerator.py @@ -32,12 +32,39 @@ class Accelerator(AWSObject): } +class Resource(AWSProperty): + """ + `Resource `__ + """ + + props: PropsDictType = { + "EndpointId": (str, True), + "Region": (str, False), + } + + +class CrossAccountAttachment(AWSObject): + """ + `CrossAccountAttachment `__ + """ + + resource_type = "AWS::GlobalAccelerator::CrossAccountAttachment" + + props: PropsDictType = { + "Name": (str, True), + "Principals": ([str], False), + "Resources": ([Resource], False), + "Tags": (Tags, False), + } + + class EndpointConfiguration(AWSProperty): """ `EndpointConfiguration `__ """ 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..f16121582 100644 --- a/troposphere/glue.py +++ b/troposphere/glue.py @@ -127,6 +127,17 @@ class Connection(AWSObject): } +class LakeFormationConfiguration(AWSProperty): + """ + `LakeFormationConfiguration `__ + """ + + props: PropsDictType = { + "AccountId": (str, False), + "UseLakeFormationCredentials": (boolean, False), + } + + class RecrawlPolicy(AWSProperty): """ `RecrawlPolicy `__ @@ -275,6 +286,7 @@ class Crawler(AWSObject): "CrawlerSecurityConfiguration": (str, False), "DatabaseName": (str, False), "Description": (str, False), + "LakeFormationConfiguration": (LakeFormationConfiguration, False), "Name": (str, False), "RecrawlPolicy": (RecrawlPolicy, False), "Role": (str, True), @@ -286,6 +298,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 +331,7 @@ class EncryptionAtRest(AWSProperty): props: PropsDictType = { "CatalogEncryptionMode": (str, False), + "CatalogEncryptionServiceRole": (str, False), "SseAwsKmsKeyId": (str, False), } @@ -967,6 +995,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/internetmonitor.py b/troposphere/internetmonitor.py index 574a5e8f2..8802f1e14 100644 --- a/troposphere/internetmonitor.py +++ b/troposphere/internetmonitor.py @@ -7,7 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags -from .validators import double, integer +from .validators import boolean, double, integer class LocalHealthEventsConfig(AWSProperty): @@ -66,7 +66,9 @@ class Monitor(AWSObject): props: PropsDictType = { "HealthEventsConfig": (HealthEventsConfig, False), + "IncludeLinkedAccounts": (boolean, False), "InternetMeasurementsLogDelivery": (InternetMeasurementsLogDelivery, False), + "LinkedAccountId": (str, False), "MaxCityNetworksToMonitor": (integer, False), "MonitorName": (str, True), "Resources": ([str], False), 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..0f0f40367 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), } @@ -330,6 +361,16 @@ class GreengrassV2(AWSProperty): } +class SiemensIE(AWSProperty): + """ + `SiemensIE `__ + """ + + props: PropsDictType = { + "IotCoreThingName": (str, True), + } + + class GatewayPlatform(AWSProperty): """ `GatewayPlatform `__ @@ -338,6 +379,7 @@ class GatewayPlatform(AWSProperty): props: PropsDictType = { "Greengrass": (Greengrass, False), "GreengrassV2": (GreengrassV2, False), + "SiemensIE": (SiemensIE, 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..efc6099fb 100644 --- a/troposphere/ivs.py +++ b/troposphere/ivs.py @@ -7,7 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags -from .validators import boolean, integer +from .validators import boolean, double, integer class Channel(AWSObject): @@ -29,6 +29,33 @@ class Channel(AWSObject): } +class Video(AWSProperty): + """ + `Video `__ + """ + + props: PropsDictType = { + "Bitrate": (integer, False), + "Framerate": (double, False), + "Height": (integer, False), + "Width": (integer, False), + } + + +class EncoderConfiguration(AWSObject): + """ + `EncoderConfiguration `__ + """ + + resource_type = "AWS::IVS::EncoderConfiguration" + + props: PropsDictType = { + "Name": (str, False), + "Tags": (Tags, False), + "Video": (Video, False), + } + + class PlaybackKeyPair(AWSObject): """ `PlaybackKeyPair `__ @@ -43,6 +70,22 @@ class PlaybackKeyPair(AWSObject): } +class PlaybackRestrictionPolicy(AWSObject): + """ + `PlaybackRestrictionPolicy `__ + """ + + resource_type = "AWS::IVS::PlaybackRestrictionPolicy" + + props: PropsDictType = { + "AllowedCountries": ([str], True), + "AllowedOrigins": ([str], True), + "EnableStrictOriginEnforcement": (boolean, False), + "Name": (str, False), + "Tags": (Tags, False), + } + + class S3DestinationConfiguration(AWSProperty): """ `S3DestinationConfiguration `__ @@ -104,6 +147,43 @@ class RecordingConfiguration(AWSObject): } +class Stage(AWSObject): + """ + `Stage `__ + """ + + resource_type = "AWS::IVS::Stage" + + props: PropsDictType = { + "Name": (str, False), + "Tags": (Tags, False), + } + + +class S3StorageConfiguration(AWSProperty): + """ + `S3StorageConfiguration `__ + """ + + props: PropsDictType = { + "BucketName": (str, True), + } + + +class StorageConfiguration(AWSObject): + """ + `StorageConfiguration `__ + """ + + resource_type = "AWS::IVS::StorageConfiguration" + + props: PropsDictType = { + "Name": (str, False), + "S3": (S3StorageConfiguration, True), + "Tags": (Tags, False), + } + + class StreamKey(AWSObject): """ `StreamKey `__ diff --git a/troposphere/kafkaconnect.py b/troposphere/kafkaconnect.py index 3f04293ee..97b905464 100644 --- a/troposphere/kafkaconnect.py +++ b/troposphere/kafkaconnect.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 @@ -174,9 +174,9 @@ class LogDelivery(AWSProperty): } -class CustomPlugin(AWSProperty): +class CustomPluginProperty(AWSProperty): """ - `CustomPlugin `__ + `CustomPluginProperty `__ """ props: PropsDictType = { @@ -191,13 +191,13 @@ class Plugin(AWSProperty): """ props: PropsDictType = { - "CustomPlugin": (CustomPlugin, True), + "CustomPlugin": (CustomPluginProperty, True), } -class WorkerConfiguration(AWSProperty): +class WorkerConfigurationProperty(AWSProperty): """ - `WorkerConfiguration `__ + `WorkerConfigurationProperty `__ """ props: PropsDictType = { @@ -225,5 +225,70 @@ class Connector(AWSObject): "LogDelivery": (LogDelivery, False), "Plugins": ([Plugin], True), "ServiceExecutionRoleArn": (str, True), - "WorkerConfiguration": (WorkerConfiguration, False), + "Tags": (Tags, False), + "WorkerConfiguration": (WorkerConfigurationProperty, False), + } + + +class S3Location(AWSProperty): + """ + `S3Location `__ + """ + + props: PropsDictType = { + "BucketArn": (str, True), + "FileKey": (str, True), + "ObjectVersion": (str, False), + } + + +class CustomPluginLocation(AWSProperty): + """ + `CustomPluginLocation `__ + """ + + props: PropsDictType = { + "S3Location": (S3Location, True), + } + + +class CustomPlugin(AWSObject): + """ + `CustomPlugin `__ + """ + + resource_type = "AWS::KafkaConnect::CustomPlugin" + + props: PropsDictType = { + "ContentType": (str, True), + "Description": (str, False), + "Location": (CustomPluginLocation, True), + "Name": (str, True), + "Tags": (Tags, False), + } + + +class WorkerConfiguration(AWSObject): + """ + `WorkerConfiguration `__ + """ + + resource_type = "AWS::KafkaConnect::WorkerConfiguration" + + props: PropsDictType = { + "Description": (str, False), + "Name": (str, True), + "PropertiesFileContent": (str, True), + "Tags": (Tags, False), + } + + +class CustomPluginFileDescription(AWSProperty): + """ + `CustomPluginFileDescription `__ + """ + + props: PropsDictType = { + "FileMd5": (str, False), + "FileSize": (integer, False), } diff --git a/troposphere/kendra.py b/troposphere/kendra.py index c48097731..db60568ab 100644 --- a/troposphere/kendra.py +++ b/troposphere/kendra.py @@ -701,6 +701,7 @@ class Faq(AWSObject): "Description": (str, False), "FileFormat": (str, False), "IndexId": (str, True), + "LanguageCode": (str, False), "Name": (str, True), "RoleArn": (str, True), "S3Path": (S3Path, True), diff --git a/troposphere/kms.py b/troposphere/kms.py index e6ffc0dd3..c74294bcb 100644 --- a/troposphere/kms.py +++ b/troposphere/kms.py @@ -47,6 +47,7 @@ class Key(AWSObject): "MultiRegion": (boolean, False), "Origin": (str, False), "PendingWindowInDays": (validate_pending_window_in_days, False), + "RotationPeriodInDays": (integer, False), "Tags": (validate_tags_or_list, False), } 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..f7c67c5ff 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 @@ -246,12 +246,14 @@ class AudioDescription(AWSProperty): """ props: PropsDictType = { + "AudioDashRoles": ([str], False), "AudioNormalizationSettings": (AudioNormalizationSettings, False), "AudioSelectorName": (str, False), "AudioType": (str, False), "AudioTypeControl": (str, False), "AudioWatermarkingSettings": (AudioWatermarkSettings, False), "CodecSettings": (AudioCodecSettings, False), + "DvbDashAccessibility": (str, False), "LanguageCode": (str, False), "LanguageCodeControl": (str, False), "Name": (str, False), @@ -545,14 +547,38 @@ class CaptionDescription(AWSProperty): props: PropsDictType = { "Accessibility": (str, False), + "CaptionDashRoles": ([str], False), "CaptionSelectorName": (str, False), "DestinationSettings": (CaptionDestinationSettings, False), + "DvbDashAccessibility": (str, False), "LanguageCode": (str, False), "LanguageDescription": (str, False), "Name": (str, False), } +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 +586,7 @@ class FeatureActivations(AWSProperty): props: PropsDictType = { "InputPrepareScheduleActions": (str, False), + "OutputStaticImageOverlayScheduleActions": (str, False), } @@ -577,6 +604,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 +644,7 @@ class GlobalConfiguration(AWSProperty): "InputEndAction": (str, False), "InputLossBehavior": (InputLossBehavior, False), "OutputLockingMode": (str, False), + "OutputLockingSettings": (OutputLockingSettings, False), "OutputTimingSource": (str, False), "SupportLowFramerateInputs": (str, False), } @@ -755,6 +813,16 @@ class ArchiveOutputSettings(AWSProperty): } +class CmafIngestOutputSettings(AWSProperty): + """ + `CmafIngestOutputSettings `__ + """ + + props: PropsDictType = { + "NameModifier": (str, False), + } + + class FrameCaptureOutputSettings(AWSProperty): """ `FrameCaptureOutputSettings `__ @@ -957,6 +1025,7 @@ class OutputSettings(AWSProperty): props: PropsDictType = { "ArchiveOutputSettings": (ArchiveOutputSettings, False), + "CmafIngestOutputSettings": (CmafIngestOutputSettings, False), "FrameCaptureOutputSettings": (FrameCaptureOutputSettings, False), "HlsOutputSettings": (HlsOutputSettings, False), "MediaPackageOutputSettings": (MediaPackageOutputSettings, False), @@ -1013,6 +1082,21 @@ class ArchiveGroupSettings(AWSProperty): } +class CmafIngestGroupSettings(AWSProperty): + """ + `CmafIngestGroupSettings `__ + """ + + props: PropsDictType = { + "Destination": (OutputLocationRef, False), + "NielsenId3Behavior": (str, False), + "Scte35Type": (str, False), + "SegmentLength": (integer, False), + "SegmentLengthUnits": (str, False), + "SendDelayMs": (integer, False), + } + + class FrameCaptureS3Settings(AWSProperty): """ `FrameCaptureS3Settings `__ @@ -1292,6 +1376,7 @@ class OutputGroupSettings(AWSProperty): props: PropsDictType = { "ArchiveGroupSettings": (ArchiveGroupSettings, False), + "CmafIngestGroupSettings": (CmafIngestGroupSettings, False), "FrameCaptureGroupSettings": (FrameCaptureGroupSettings, False), "HlsGroupSettings": (HlsGroupSettings, False), "MediaPackageGroupSettings": (MediaPackageGroupSettings, False), @@ -1535,6 +1620,8 @@ class H265Settings(AWSProperty): "LookAheadRateControl": (str, False), "MaxBitrate": (integer, False), "MinIInterval": (integer, False), + "MvOverPictureBoundaries": (str, False), + "MvTemporalPredictor": (str, False), "ParDenominator": (integer, False), "ParNumerator": (integer, False), "Profile": (str, False), @@ -1544,8 +1631,12 @@ class H265Settings(AWSProperty): "SceneChangeDetect": (str, False), "Slices": (integer, False), "Tier": (str, False), + "TileHeight": (integer, False), + "TilePadding": (str, False), + "TileWidth": (integer, False), "TimecodeBurninSettings": (TimecodeBurninSettings, False), "TimecodeInsertion": (str, False), + "TreeblockSize": (str, False), } @@ -1625,6 +1716,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 +2312,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..254909f0a 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 `__ @@ -76,6 +86,7 @@ class Channel(AWSObject): resource_type = "AWS::MediaTailor::Channel" props: PropsDictType = { + "Audiences": ([str], False), "ChannelName": (str, True), "FillerSlate": (SlateSource, False), "LogConfiguration": (LogConfigurationForChannel, False), @@ -83,6 +94,7 @@ class Channel(AWSObject): "PlaybackMode": (str, True), "Tags": (Tags, False), "Tier": (str, False), + "TimeShiftConfiguration": (TimeShiftConfiguration, False), } diff --git a/troposphere/msk.py b/troposphere/msk.py index a120473f9..4a01155ac 100644 --- a/troposphere/msk.py +++ b/troposphere/msk.py @@ -467,6 +467,16 @@ class ConsumerGroupReplication(AWSProperty): } +class ReplicationStartingPosition(AWSProperty): + """ + `ReplicationStartingPosition `__ + """ + + props: PropsDictType = { + "Type": (str, False), + } + + class TopicReplication(AWSProperty): """ `TopicReplication `__ @@ -476,6 +486,7 @@ class TopicReplication(AWSProperty): "CopyAccessControlListsForTopics": (boolean, False), "CopyTopicConfigurations": (boolean, False), "DetectAndCopyNewTopics": (boolean, False), + "StartingPosition": (ReplicationStartingPosition, False), "TopicsToExclude": ([str], False), "TopicsToReplicate": ([str], True), } 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/oam.py b/troposphere/oam.py index e3d7c5277..c5c38e3d3 100644 --- a/troposphere/oam.py +++ b/troposphere/oam.py @@ -6,7 +6,28 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, PropsDictType +from . import AWSObject, AWSProperty, PropsDictType + + +class LinkFilter(AWSProperty): + """ + `LinkFilter `__ + """ + + props: PropsDictType = { + "Filter": (str, True), + } + + +class LinkConfiguration(AWSProperty): + """ + `LinkConfiguration `__ + """ + + props: PropsDictType = { + "LogGroupConfiguration": (LinkFilter, False), + "MetricConfiguration": (LinkFilter, False), + } class Link(AWSObject): @@ -18,6 +39,7 @@ class Link(AWSObject): props: PropsDictType = { "LabelTemplate": (str, False), + "LinkConfiguration": (LinkConfiguration, False), "ResourceTypes": ([str], True), "SinkIdentifier": (str, True), "Tags": (dict, 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..ed57fe02d 100644 --- a/troposphere/pinpoint.py +++ b/troposphere/pinpoint.py @@ -496,6 +496,7 @@ class EmailChannel(AWSObject): "Enabled": (boolean, False), "FromAddress": (str, True), "Identity": (str, True), + "OrchestrationSendingRoleArn": (str, False), "RoleArn": (str, False), } @@ -540,9 +541,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..98e1d91f2 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 `__ @@ -446,6 +457,297 @@ class CategoryFilterConfiguration(AWSProperty): } +class FontSize(AWSProperty): + """ + `FontSize `__ + """ + + props: PropsDictType = { + "Relative": (str, False), + } + + +class FontWeight(AWSProperty): + """ + `FontWeight `__ + """ + + props: PropsDictType = { + "Name": (str, False), + } + + +class FontConfiguration(AWSProperty): + """ + `FontConfiguration `__ + """ + + props: PropsDictType = { + "FontColor": (str, False), + "FontDecoration": (str, False), + "FontSize": (FontSize, False), + "FontStyle": (str, False), + "FontWeight": (FontWeight, False), + } + + +class LabelOptions(AWSProperty): + """ + `LabelOptions `__ + """ + + props: PropsDictType = { + "CustomLabel": (str, False), + "FontConfiguration": (FontConfiguration, False), + "Visibility": (str, False), + } + + +class SheetControlInfoIconLabelOptions(AWSProperty): + """ + `SheetControlInfoIconLabelOptions `__ + """ + + props: PropsDictType = { + "InfoIconText": (str, False), + "Visibility": (str, False), + } + + +class DateTimePickerControlDisplayOptions(AWSProperty): + """ + `DateTimePickerControlDisplayOptions `__ + """ + + props: PropsDictType = { + "DateTimeFormat": (str, False), + "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), + "TitleOptions": (LabelOptions, False), + } + + +class DefaultDateTimePickerControlOptions(AWSProperty): + """ + `DefaultDateTimePickerControlOptions `__ + """ + + props: PropsDictType = { + "DisplayOptions": (DateTimePickerControlDisplayOptions, False), + "Type": (str, False), + } + + +class ListControlSelectAllOptions(AWSProperty): + """ + `ListControlSelectAllOptions `__ + """ + + props: PropsDictType = { + "Visibility": (str, False), + } + + +class DropDownControlDisplayOptions(AWSProperty): + """ + `DropDownControlDisplayOptions `__ + """ + + props: PropsDictType = { + "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), + "SelectAllOptions": (ListControlSelectAllOptions, False), + "TitleOptions": (LabelOptions, False), + } + + +class FilterSelectableValues(AWSProperty): + """ + `FilterSelectableValues `__ + """ + + props: PropsDictType = { + "Values": ([str], False), + } + + +class DefaultFilterDropDownControlOptions(AWSProperty): + """ + `DefaultFilterDropDownControlOptions `__ + """ + + props: PropsDictType = { + "DisplayOptions": (DropDownControlDisplayOptions, False), + "SelectableValues": (FilterSelectableValues, False), + "Type": (str, False), + } + + +class ListControlSearchOptions(AWSProperty): + """ + `ListControlSearchOptions `__ + """ + + props: PropsDictType = { + "Visibility": (str, False), + } + + +class ListControlDisplayOptions(AWSProperty): + """ + `ListControlDisplayOptions `__ + """ + + props: PropsDictType = { + "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), + "SearchOptions": (ListControlSearchOptions, False), + "SelectAllOptions": (ListControlSelectAllOptions, False), + "TitleOptions": (LabelOptions, False), + } + + +class DefaultFilterListControlOptions(AWSProperty): + """ + `DefaultFilterListControlOptions `__ + """ + + props: PropsDictType = { + "DisplayOptions": (ListControlDisplayOptions, False), + "SelectableValues": (FilterSelectableValues, False), + "Type": (str, False), + } + + +class RelativeDateTimeControlDisplayOptions(AWSProperty): + """ + `RelativeDateTimeControlDisplayOptions `__ + """ + + props: PropsDictType = { + "DateTimeFormat": (str, False), + "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), + "TitleOptions": (LabelOptions, False), + } + + +class DefaultRelativeDateTimeControlOptions(AWSProperty): + """ + `DefaultRelativeDateTimeControlOptions `__ + """ + + props: PropsDictType = { + "DisplayOptions": (RelativeDateTimeControlDisplayOptions, False), + } + + +class SliderControlDisplayOptions(AWSProperty): + """ + `SliderControlDisplayOptions `__ + """ + + props: PropsDictType = { + "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), + "TitleOptions": (LabelOptions, False), + } + + +class DefaultSliderControlOptions(AWSProperty): + """ + `DefaultSliderControlOptions `__ + """ + + props: PropsDictType = { + "DisplayOptions": (SliderControlDisplayOptions, False), + "MaximumValue": (double, True), + "MinimumValue": (double, True), + "StepSize": (double, True), + "Type": (str, False), + } + + +class TextControlPlaceholderOptions(AWSProperty): + """ + `TextControlPlaceholderOptions `__ + """ + + props: PropsDictType = { + "Visibility": (str, False), + } + + +class TextAreaControlDisplayOptions(AWSProperty): + """ + `TextAreaControlDisplayOptions `__ + """ + + props: PropsDictType = { + "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), + "PlaceholderOptions": (TextControlPlaceholderOptions, False), + "TitleOptions": (LabelOptions, False), + } + + +class DefaultTextAreaControlOptions(AWSProperty): + """ + `DefaultTextAreaControlOptions `__ + """ + + props: PropsDictType = { + "Delimiter": (str, False), + "DisplayOptions": (TextAreaControlDisplayOptions, False), + } + + +class TextFieldControlDisplayOptions(AWSProperty): + """ + `TextFieldControlDisplayOptions `__ + """ + + props: PropsDictType = { + "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), + "PlaceholderOptions": (TextControlPlaceholderOptions, False), + "TitleOptions": (LabelOptions, False), + } + + +class DefaultTextFieldControlOptions(AWSProperty): + """ + `DefaultTextFieldControlOptions `__ + """ + + props: PropsDictType = { + "DisplayOptions": (TextFieldControlDisplayOptions, False), + } + + +class DefaultFilterControlOptions(AWSProperty): + """ + `DefaultFilterControlOptions `__ + """ + + props: PropsDictType = { + "DefaultDateTimePickerOptions": (DefaultDateTimePickerControlOptions, False), + "DefaultDropdownOptions": (DefaultFilterDropDownControlOptions, False), + "DefaultListOptions": (DefaultFilterListControlOptions, False), + "DefaultRelativeDateTimeOptions": ( + DefaultRelativeDateTimeControlOptions, + False, + ), + "DefaultSliderOptions": (DefaultSliderControlOptions, False), + "DefaultTextAreaOptions": (DefaultTextAreaControlOptions, False), + "DefaultTextFieldOptions": (DefaultTextFieldControlOptions, False), + } + + +class DefaultFilterControlConfiguration(AWSProperty): + """ + `DefaultFilterControlConfiguration `__ + """ + + props: PropsDictType = { + "ControlOptions": (DefaultFilterControlOptions, True), + "Title": (str, True), + } + + class CategoryFilter(AWSProperty): """ `CategoryFilter `__ @@ -454,6 +756,7 @@ class CategoryFilter(AWSProperty): props: PropsDictType = { "Column": (ColumnIdentifier, True), "Configuration": (CategoryFilterConfiguration, True), + "DefaultFilterControlConfiguration": (DefaultFilterControlConfiguration, False), "FilterId": (str, True), } @@ -511,6 +814,7 @@ class NumericEqualityFilter(AWSProperty): props: PropsDictType = { "AggregationFunction": (AggregationFunction, False), "Column": (ColumnIdentifier, True), + "DefaultFilterControlConfiguration": (DefaultFilterControlConfiguration, False), "FilterId": (str, True), "MatchOperator": (str, True), "NullOption": (str, True), @@ -539,6 +843,7 @@ class NumericRangeFilter(AWSProperty): props: PropsDictType = { "AggregationFunction": (AggregationFunction, False), "Column": (ColumnIdentifier, True), + "DefaultFilterControlConfiguration": (DefaultFilterControlConfiguration, False), "FilterId": (str, True), "IncludeMaximum": (boolean, False), "IncludeMinimum": (boolean, False), @@ -580,6 +885,7 @@ class RelativeDatesFilter(AWSProperty): props: PropsDictType = { "AnchorDateConfiguration": (AnchorDateConfiguration, True), "Column": (ColumnIdentifier, True), + "DefaultFilterControlConfiguration": (DefaultFilterControlConfiguration, False), "ExcludePeriodConfiguration": (ExcludePeriodConfiguration, False), "FilterId": (str, True), "MinimumGranularity": (str, False), @@ -609,6 +915,7 @@ class TimeEqualityFilter(AWSProperty): props: PropsDictType = { "Column": (ColumnIdentifier, True), + "DefaultFilterControlConfiguration": (DefaultFilterControlConfiguration, False), "FilterId": (str, True), "ParameterName": (str, False), "RollingDate": (RollingDateConfiguration, False), @@ -636,6 +943,7 @@ class TimeRangeFilter(AWSProperty): props: PropsDictType = { "Column": (ColumnIdentifier, True), + "DefaultFilterControlConfiguration": (DefaultFilterControlConfiguration, False), "ExcludePeriodConfiguration": (ExcludePeriodConfiguration, False), "FilterId": (str, True), "IncludeMaximum": (boolean, False), @@ -667,6 +975,7 @@ class TopBottomFilter(AWSProperty): props: PropsDictType = { "AggregationSortConfigurations": ([AggregationSortConfiguration], True), "Column": (ColumnIdentifier, True), + "DefaultFilterControlConfiguration": (DefaultFilterControlConfiguration, False), "FilterId": (str, True), "Limit": (double, False), "ParameterName": (str, False), @@ -871,133 +1180,50 @@ class IntegerParameterDeclaration(AWSProperty): class StringDefaultValues(AWSProperty): """ - `StringDefaultValues `__ - """ - - props: PropsDictType = { - "DynamicValue": (DynamicDefaultValue, False), - "StaticValues": ([str], False), - } - - -class StringValueWhenUnsetConfiguration(AWSProperty): - """ - `StringValueWhenUnsetConfiguration `__ - """ - - props: PropsDictType = { - "CustomValue": (str, False), - "ValueWhenUnsetOption": (str, False), - } - - -class StringParameterDeclaration(AWSProperty): - """ - `StringParameterDeclaration `__ - """ - - props: PropsDictType = { - "DefaultValues": (StringDefaultValues, False), - "MappedDataSetParameters": ([MappedDataSetParameter], False), - "Name": (str, True), - "ParameterValueType": (str, True), - "ValueWhenUnset": (StringValueWhenUnsetConfiguration, False), - } - - -class ParameterDeclaration(AWSProperty): - """ - `ParameterDeclaration `__ - """ - - props: PropsDictType = { - "DateTimeParameterDeclaration": (DateTimeParameterDeclaration, False), - "DecimalParameterDeclaration": (DecimalParameterDeclaration, False), - "IntegerParameterDeclaration": (IntegerParameterDeclaration, False), - "StringParameterDeclaration": (StringParameterDeclaration, False), - } - - -class FontSize(AWSProperty): - """ - `FontSize `__ - """ - - props: PropsDictType = { - "Relative": (str, False), - } - - -class FontWeight(AWSProperty): - """ - `FontWeight `__ - """ - - props: PropsDictType = { - "Name": (str, False), - } - - -class FontConfiguration(AWSProperty): - """ - `FontConfiguration `__ - """ - - props: PropsDictType = { - "FontColor": (str, False), - "FontDecoration": (str, False), - "FontSize": (FontSize, False), - "FontStyle": (str, False), - "FontWeight": (FontWeight, False), - } - - -class LabelOptions(AWSProperty): - """ - `LabelOptions `__ + `StringDefaultValues `__ """ props: PropsDictType = { - "CustomLabel": (str, False), - "FontConfiguration": (FontConfiguration, False), - "Visibility": (str, False), + "DynamicValue": (DynamicDefaultValue, False), + "StaticValues": ([str], False), } -class SheetControlInfoIconLabelOptions(AWSProperty): +class StringValueWhenUnsetConfiguration(AWSProperty): """ - `SheetControlInfoIconLabelOptions `__ + `StringValueWhenUnsetConfiguration `__ """ props: PropsDictType = { - "InfoIconText": (str, False), - "Visibility": (str, False), + "CustomValue": (str, False), + "ValueWhenUnsetOption": (str, False), } -class DateTimePickerControlDisplayOptions(AWSProperty): +class StringParameterDeclaration(AWSProperty): """ - `DateTimePickerControlDisplayOptions `__ + `StringParameterDeclaration `__ """ props: PropsDictType = { - "DateTimeFormat": (str, False), - "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), - "TitleOptions": (LabelOptions, False), + "DefaultValues": (StringDefaultValues, False), + "MappedDataSetParameters": ([MappedDataSetParameter], False), + "Name": (str, True), + "ParameterValueType": (str, True), + "ValueWhenUnset": (StringValueWhenUnsetConfiguration, False), } -class FilterDateTimePickerControl(AWSProperty): +class ParameterDeclaration(AWSProperty): """ - `FilterDateTimePickerControl `__ + `ParameterDeclaration `__ """ props: PropsDictType = { - "DisplayOptions": (DateTimePickerControlDisplayOptions, False), - "FilterControlId": (str, True), - "SourceFilterId": (str, True), - "Title": (str, True), - "Type": (str, False), + "DateTimeParameterDeclaration": (DateTimeParameterDeclaration, False), + "DecimalParameterDeclaration": (DecimalParameterDeclaration, False), + "IntegerParameterDeclaration": (IntegerParameterDeclaration, False), + "StringParameterDeclaration": (StringParameterDeclaration, False), } @@ -1022,35 +1248,29 @@ class CascadingControlConfiguration(AWSProperty): } -class ListControlSelectAllOptions(AWSProperty): - """ - `ListControlSelectAllOptions `__ - """ - - props: PropsDictType = { - "Visibility": (str, False), - } - - -class DropDownControlDisplayOptions(AWSProperty): +class FilterCrossSheetControl(AWSProperty): """ - `DropDownControlDisplayOptions `__ + `FilterCrossSheetControl `__ """ props: PropsDictType = { - "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), - "SelectAllOptions": (ListControlSelectAllOptions, False), - "TitleOptions": (LabelOptions, False), + "CascadingControlConfiguration": (CascadingControlConfiguration, False), + "FilterControlId": (str, True), + "SourceFilterId": (str, True), } -class FilterSelectableValues(AWSProperty): +class FilterDateTimePickerControl(AWSProperty): """ - `FilterSelectableValues `__ + `FilterDateTimePickerControl `__ """ props: PropsDictType = { - "Values": ([str], False), + "DisplayOptions": (DateTimePickerControlDisplayOptions, False), + "FilterControlId": (str, True), + "SourceFilterId": (str, True), + "Title": (str, True), + "Type": (str, False), } @@ -1070,29 +1290,6 @@ class FilterDropDownControl(AWSProperty): } -class ListControlSearchOptions(AWSProperty): - """ - `ListControlSearchOptions `__ - """ - - props: PropsDictType = { - "Visibility": (str, False), - } - - -class ListControlDisplayOptions(AWSProperty): - """ - `ListControlDisplayOptions `__ - """ - - props: PropsDictType = { - "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), - "SearchOptions": (ListControlSearchOptions, False), - "SelectAllOptions": (ListControlSelectAllOptions, False), - "TitleOptions": (LabelOptions, False), - } - - class FilterListControl(AWSProperty): """ `FilterListControl `__ @@ -1109,18 +1306,6 @@ class FilterListControl(AWSProperty): } -class RelativeDateTimeControlDisplayOptions(AWSProperty): - """ - `RelativeDateTimeControlDisplayOptions `__ - """ - - props: PropsDictType = { - "DateTimeFormat": (str, False), - "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), - "TitleOptions": (LabelOptions, False), - } - - class FilterRelativeDateTimeControl(AWSProperty): """ `FilterRelativeDateTimeControl `__ @@ -1134,17 +1319,6 @@ class FilterRelativeDateTimeControl(AWSProperty): } -class SliderControlDisplayOptions(AWSProperty): - """ - `SliderControlDisplayOptions `__ - """ - - props: PropsDictType = { - "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), - "TitleOptions": (LabelOptions, False), - } - - class FilterSliderControl(AWSProperty): """ `FilterSliderControl `__ @@ -1162,28 +1336,6 @@ class FilterSliderControl(AWSProperty): } -class TextControlPlaceholderOptions(AWSProperty): - """ - `TextControlPlaceholderOptions `__ - """ - - props: PropsDictType = { - "Visibility": (str, False), - } - - -class TextAreaControlDisplayOptions(AWSProperty): - """ - `TextAreaControlDisplayOptions `__ - """ - - props: PropsDictType = { - "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), - "PlaceholderOptions": (TextControlPlaceholderOptions, False), - "TitleOptions": (LabelOptions, False), - } - - class FilterTextAreaControl(AWSProperty): """ `FilterTextAreaControl `__ @@ -1198,18 +1350,6 @@ class FilterTextAreaControl(AWSProperty): } -class TextFieldControlDisplayOptions(AWSProperty): - """ - `TextFieldControlDisplayOptions `__ - """ - - props: PropsDictType = { - "InfoIconLabelOptions": (SheetControlInfoIconLabelOptions, False), - "PlaceholderOptions": (TextControlPlaceholderOptions, False), - "TitleOptions": (LabelOptions, False), - } - - class FilterTextFieldControl(AWSProperty): """ `FilterTextFieldControl `__ @@ -1229,6 +1369,7 @@ class FilterControl(AWSProperty): """ props: PropsDictType = { + "CrossSheet": (FilterCrossSheetControl, False), "DateTimePicker": (FilterDateTimePickerControl, False), "Dropdown": (FilterDropDownControl, False), "List": (FilterListControl, False), @@ -5452,6 +5593,28 @@ class TreeMapVisual(AWSProperty): } +class WaterfallChartGroupColorConfiguration(AWSProperty): + """ + `WaterfallChartGroupColorConfiguration `__ + """ + + props: PropsDictType = { + "NegativeBarColor": (str, False), + "PositiveBarColor": (str, False), + "TotalBarColor": (str, False), + } + + +class WaterfallChartColorConfiguration(AWSProperty): + """ + `WaterfallChartColorConfiguration `__ + """ + + props: PropsDictType = { + "GroupColorConfiguration": (WaterfallChartGroupColorConfiguration, False), + } + + class WaterfallChartAggregatedFieldWells(AWSProperty): """ `WaterfallChartAggregatedFieldWells `__ @@ -5506,6 +5669,7 @@ class WaterfallChartConfiguration(AWSProperty): props: PropsDictType = { "CategoryAxisDisplayOptions": (AxisDisplayOptions, False), "CategoryAxisLabelOptions": (ChartAxisLabelOptions, False), + "ColorConfiguration": (WaterfallChartColorConfiguration, False), "DataLabels": (DataLabelOptions, False), "FieldWells": (WaterfallChartFieldWells, False), "Legend": (LegendOptions, False), @@ -5670,11 +5834,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 +5959,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 +5994,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 +6182,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 +6210,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 +6483,7 @@ class CastColumnTypeOperation(AWSProperty): "ColumnName": (str, True), "Format": (str, False), "NewColumnType": (str, True), + "SubType": (str, False), } @@ -6419,6 +6632,7 @@ class InputColumn(AWSProperty): props: PropsDictType = { "Name": (str, True), + "SubType": (str, False), "Type": (str, True), } @@ -6766,6 +6980,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 +7005,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 +7040,9 @@ class DataSourceParameters(AWSProperty): "SnowflakeParameters": (SnowflakeParameters, False), "SparkParameters": (SparkParameters, False), "SqlServerParameters": (SqlServerParameters, False), + "StarburstParameters": (StarburstParameters, False), "TeradataParameters": (TeradataParameters, False), + "TrinoParameters": (TrinoParameters, False), } @@ -7032,6 +7273,7 @@ class TemplateVersionDefinition(AWSProperty): "ColumnConfigurations": ([ColumnConfiguration], False), "DataSetConfigurations": ([DataSetConfiguration], True), "FilterGroups": ([FilterGroup], False), + "Options": (AssetOptions, False), "ParameterDeclarations": ([ParameterDeclaration], False), "Sheets": ([SheetDefinition], False), } @@ -7566,6 +7808,7 @@ class Topic(AWSObject): "Description": (str, False), "Name": (str, False), "TopicId": (str, False), + "UserExperienceVersion": (str, False), } @@ -7589,28 +7832,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 +7858,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..644faecdb 100644 --- a/troposphere/rds.py +++ b/troposphere/rds.py @@ -34,15 +34,18 @@ class CustomDBEngineVersion(AWSObject): resource_type = "AWS::RDS::CustomDBEngineVersion" props: PropsDictType = { - "DatabaseInstallationFilesS3BucketName": (str, True), + "DatabaseInstallationFilesS3BucketName": (str, False), "DatabaseInstallationFilesS3Prefix": (str, False), "Description": (str, False), "Engine": (str, True), "EngineVersion": (str, True), + "ImageId": (str, False), "KMSKeyId": (str, False), "Manifest": (str, False), + "SourceCustomDbEngineVersionIdentifier": (str, False), "Status": (str, False), "Tags": (Tags, False), + "UseAwsProvidedLatestImage": (boolean, False), } @@ -120,6 +123,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), @@ -231,6 +235,7 @@ class DBInstance(AWSObject): "AllowMajorVersionUpgrade": (boolean, False), "AssociatedRoles": ([DBInstanceRole], False), "AutoMinorVersionUpgrade": (boolean, False), + "AutomaticBackupReplicationKmsKeyId": (str, False), "AutomaticBackupReplicationRegion": (str, False), "AvailabilityZone": (str, False), "BackupRetentionPeriod": (validate_backup_retention_period, False), @@ -249,6 +254,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 +507,25 @@ class GlobalCluster(AWSObject): } +class Integration(AWSObject): + """ + `Integration `__ + """ + + resource_type = "AWS::RDS::Integration" + + props: PropsDictType = { + "AdditionalEncryptionContext": (dict, False), + "DataFilter": (str, False), + "Description": (str, 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..0b0864f28 100755 --- a/troposphere/redshiftserverless.py +++ b/troposphere/redshiftserverless.py @@ -10,6 +10,18 @@ from .validators import boolean, integer +class SnapshotCopyConfiguration(AWSProperty): + """ + `SnapshotCopyConfiguration `__ + """ + + props: PropsDictType = { + "DestinationKmsKeyId": (str, False), + "DestinationRegion": (str, True), + "SnapshotRetentionPeriod": (integer, False), + } + + class Namespace(AWSObject): """ `Namespace `__ @@ -18,6 +30,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 +40,11 @@ class Namespace(AWSObject): "IamRoles": ([str], False), "KmsKeyId": (str, False), "LogExports": ([str], False), + "ManageAdminPassword": (boolean, False), "NamespaceName": (str, True), + "NamespaceResourcePolicy": (dict, False), + "RedshiftIdcApplicationArn": (str, False), + "SnapshotCopyConfigurations": ([SnapshotCopyConfiguration], False), "Tags": (Tags, False), } @@ -91,6 +108,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 +131,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 +149,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/resiliencehub.py b/troposphere/resiliencehub.py index 22aed068d..40062e16a 100644 --- a/troposphere/resiliencehub.py +++ b/troposphere/resiliencehub.py @@ -97,6 +97,19 @@ class FailurePolicy(AWSProperty): } +class PolicyMap(AWSProperty): + """ + `PolicyMap `__ + """ + + props: PropsDictType = { + "AZ": (FailurePolicy, True), + "Hardware": (FailurePolicy, True), + "Region": (FailurePolicy, False), + "Software": (FailurePolicy, True), + } + + class ResiliencyPolicy(AWSObject): """ `ResiliencyPolicy `__ 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..7d7e9ba80 100644 --- a/troposphere/sagemaker.py +++ b/troposphere/sagemaker.py @@ -39,6 +39,52 @@ 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 CodeEditorAppImageConfig(AWSProperty): + """ + `CodeEditorAppImageConfig `__ + """ + + props: PropsDictType = { + "ContainerConfig": (ContainerConfig, False), + } + + +class JupyterLabAppImageConfig(AWSProperty): + """ + `JupyterLabAppImageConfig `__ + """ + + props: PropsDictType = { + "ContainerConfig": (ContainerConfig, False), + } + + class FileSystemConfig(AWSProperty): """ `FileSystemConfig `__ @@ -82,6 +128,8 @@ class AppImageConfig(AWSObject): props: PropsDictType = { "AppImageConfigName": (str, True), + "CodeEditorAppImageConfig": (CodeEditorAppImageConfig, False), + "JupyterLabAppImageConfig": (JupyterLabAppImageConfig, False), "KernelGatewayImageConfig": (KernelGatewayImageConfig, False), "Tags": (Tags, False), } @@ -442,6 +490,17 @@ class DefaultSpaceSettings(AWSProperty): } +class DockerSettings(AWSProperty): + """ + `DockerSettings `__ + """ + + props: PropsDictType = { + "EnableDockerAccess": (str, False), + "VpcOnlyTrustedAccounts": ([str], False), + } + + class RStudioServerProDomainSettings(AWSProperty): """ `RStudioServerProDomainSettings `__ @@ -461,11 +520,100 @@ class DomainSettings(AWSProperty): """ props: PropsDictType = { + "DockerSettings": (DockerSettings, False), "RStudioServerProDomainSettings": (RStudioServerProDomainSettings, False), "SecurityGroupIds": ([str], False), } +class CodeEditorAppSettings(AWSProperty): + """ + `CodeEditorAppSettings `__ + """ + + props: PropsDictType = { + "CustomImages": ([CustomImage], False), + "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 +643,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 +951,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 +995,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 +1017,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 +1086,17 @@ class OnlineStoreSecurityConfig(AWSProperty): } +class TtlDuration(AWSProperty): + """ + `TtlDuration `__ + """ + + props: PropsDictType = { + "Unit": (str, False), + "Value": (integer, False), + } + + class OnlineStoreConfig(AWSProperty): """ `OnlineStoreConfig `__ @@ -912,6 +1105,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 +1139,7 @@ class FeatureGroup(AWSObject): "RecordIdentifierFeatureName": (str, True), "RoleArn": (str, False), "Tags": (Tags, False), + "ThroughputConfig": (ThroughputConfig, False), } @@ -973,6 +1181,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 +1400,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 +1443,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 +1470,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 +2173,6 @@ class SourceAlgorithmSpecification(AWSProperty): } -class S3DataSource(AWSProperty): - """ - `S3DataSource `__ - """ - - props: PropsDictType = { - "S3DataType": (str, True), - "S3Uri": (str, True), - } - - class DataSource(AWSProperty): """ `DataSource `__ @@ -2364,14 +2678,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 +2784,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 +2894,16 @@ class EndpointMetadata(AWSProperty): } +class ModelAccessConfig(AWSProperty): + """ + `ModelAccessConfig `__ + """ + + props: PropsDictType = { + "AcceptEula": (boolean, True), + } + + class RSessionAppSettings(AWSProperty): """ `RSessionAppSettings `__ diff --git a/troposphere/securityhub.py b/troposphere/securityhub.py index a72be5ebe..ff14bbd14 100644 --- a/troposphere/securityhub.py +++ b/troposphere/securityhub.py @@ -85,7 +85,7 @@ class AutomationRulesAction(AWSProperty): class DateRange(AWSProperty): """ - `DateRange `__ + `DateRange `__ """ props: PropsDictType = { @@ -96,7 +96,7 @@ class DateRange(AWSProperty): class DateFilter(AWSProperty): """ - `DateFilter `__ + `DateFilter `__ """ props: PropsDictType = { @@ -108,7 +108,7 @@ class DateFilter(AWSProperty): class MapFilter(AWSProperty): """ - `MapFilter `__ + `MapFilter `__ """ props: PropsDictType = { @@ -120,7 +120,7 @@ class MapFilter(AWSProperty): class NumberFilter(AWSProperty): """ - `NumberFilter `__ + `NumberFilter `__ """ props: PropsDictType = { @@ -132,7 +132,7 @@ class NumberFilter(AWSProperty): class StringFilter(AWSProperty): """ - `StringFilter `__ + `StringFilter `__ """ props: PropsDictType = { @@ -204,6 +204,18 @@ class AutomationRule(AWSObject): } +class DelegatedAdmin(AWSObject): + """ + `DelegatedAdmin `__ + """ + + resource_type = "AWS::SecurityHub::DelegatedAdmin" + + props: PropsDictType = { + "AdminAccountId": (str, True), + } + + class Hub(AWSObject): """ `Hub `__ @@ -219,6 +231,161 @@ class Hub(AWSObject): } +class BooleanFilter(AWSProperty): + """ + `BooleanFilter `__ + """ + + props: PropsDictType = { + "Value": (boolean, True), + } + + +class IpFilter(AWSProperty): + """ + `IpFilter `__ + """ + + props: PropsDictType = { + "Cidr": (str, True), + } + + +class AwsSecurityFindingFilters(AWSProperty): + """ + `AwsSecurityFindingFilters `__ + """ + + props: PropsDictType = { + "AwsAccountId": ([StringFilter], False), + "AwsAccountName": ([StringFilter], False), + "CompanyName": ([StringFilter], False), + "ComplianceAssociatedStandardsId": ([StringFilter], False), + "ComplianceSecurityControlId": ([StringFilter], False), + "ComplianceSecurityControlParametersName": ([StringFilter], False), + "ComplianceSecurityControlParametersValue": ([StringFilter], False), + "ComplianceStatus": ([StringFilter], False), + "Confidence": ([NumberFilter], False), + "CreatedAt": ([DateFilter], False), + "Criticality": ([NumberFilter], False), + "Description": ([StringFilter], False), + "FindingProviderFieldsConfidence": ([NumberFilter], False), + "FindingProviderFieldsCriticality": ([NumberFilter], False), + "FindingProviderFieldsRelatedFindingsId": ([StringFilter], False), + "FindingProviderFieldsRelatedFindingsProductArn": ([StringFilter], False), + "FindingProviderFieldsSeverityLabel": ([StringFilter], False), + "FindingProviderFieldsSeverityOriginal": ([StringFilter], False), + "FindingProviderFieldsTypes": ([StringFilter], False), + "FirstObservedAt": ([DateFilter], False), + "GeneratorId": ([StringFilter], False), + "Id": ([StringFilter], False), + "LastObservedAt": ([DateFilter], False), + "MalwareName": ([StringFilter], False), + "MalwarePath": ([StringFilter], False), + "MalwareState": ([StringFilter], False), + "MalwareType": ([StringFilter], False), + "NetworkDestinationDomain": ([StringFilter], False), + "NetworkDestinationIpV4": ([IpFilter], False), + "NetworkDestinationIpV6": ([IpFilter], False), + "NetworkDestinationPort": ([NumberFilter], False), + "NetworkDirection": ([StringFilter], False), + "NetworkProtocol": ([StringFilter], False), + "NetworkSourceDomain": ([StringFilter], False), + "NetworkSourceIpV4": ([IpFilter], False), + "NetworkSourceIpV6": ([IpFilter], False), + "NetworkSourceMac": ([StringFilter], False), + "NetworkSourcePort": ([NumberFilter], False), + "NoteText": ([StringFilter], False), + "NoteUpdatedAt": ([DateFilter], False), + "NoteUpdatedBy": ([StringFilter], False), + "ProcessLaunchedAt": ([DateFilter], False), + "ProcessName": ([StringFilter], False), + "ProcessParentPid": ([NumberFilter], False), + "ProcessPath": ([StringFilter], False), + "ProcessPid": ([NumberFilter], False), + "ProcessTerminatedAt": ([DateFilter], False), + "ProductArn": ([StringFilter], False), + "ProductFields": ([MapFilter], False), + "ProductName": ([StringFilter], False), + "RecommendationText": ([StringFilter], False), + "RecordState": ([StringFilter], False), + "Region": ([StringFilter], False), + "RelatedFindingsId": ([StringFilter], False), + "RelatedFindingsProductArn": ([StringFilter], False), + "ResourceApplicationArn": ([StringFilter], False), + "ResourceApplicationName": ([StringFilter], False), + "ResourceAwsEc2InstanceIamInstanceProfileArn": ([StringFilter], False), + "ResourceAwsEc2InstanceImageId": ([StringFilter], False), + "ResourceAwsEc2InstanceIpV4Addresses": ([IpFilter], False), + "ResourceAwsEc2InstanceIpV6Addresses": ([IpFilter], False), + "ResourceAwsEc2InstanceKeyName": ([StringFilter], False), + "ResourceAwsEc2InstanceLaunchedAt": ([DateFilter], False), + "ResourceAwsEc2InstanceSubnetId": ([StringFilter], False), + "ResourceAwsEc2InstanceType": ([StringFilter], False), + "ResourceAwsEc2InstanceVpcId": ([StringFilter], False), + "ResourceAwsIamAccessKeyCreatedAt": ([DateFilter], False), + "ResourceAwsIamAccessKeyPrincipalName": ([StringFilter], False), + "ResourceAwsIamAccessKeyStatus": ([StringFilter], False), + "ResourceAwsIamUserUserName": ([StringFilter], False), + "ResourceAwsS3BucketOwnerId": ([StringFilter], False), + "ResourceAwsS3BucketOwnerName": ([StringFilter], False), + "ResourceContainerImageId": ([StringFilter], False), + "ResourceContainerImageName": ([StringFilter], False), + "ResourceContainerLaunchedAt": ([DateFilter], False), + "ResourceContainerName": ([StringFilter], False), + "ResourceDetailsOther": ([MapFilter], False), + "ResourceId": ([StringFilter], False), + "ResourcePartition": ([StringFilter], False), + "ResourceRegion": ([StringFilter], False), + "ResourceTags": ([MapFilter], False), + "ResourceType": ([StringFilter], False), + "Sample": ([BooleanFilter], False), + "SeverityLabel": ([StringFilter], False), + "SourceUrl": ([StringFilter], False), + "ThreatIntelIndicatorCategory": ([StringFilter], False), + "ThreatIntelIndicatorLastObservedAt": ([DateFilter], False), + "ThreatIntelIndicatorSource": ([StringFilter], False), + "ThreatIntelIndicatorSourceUrl": ([StringFilter], False), + "ThreatIntelIndicatorType": ([StringFilter], False), + "ThreatIntelIndicatorValue": ([StringFilter], False), + "Title": ([StringFilter], False), + "Type": ([StringFilter], False), + "UpdatedAt": ([DateFilter], False), + "UserDefinedFields": ([MapFilter], False), + "VerificationState": ([StringFilter], False), + "VulnerabilitiesExploitAvailable": ([StringFilter], False), + "VulnerabilitiesFixAvailable": ([StringFilter], False), + "WorkflowState": ([StringFilter], False), + "WorkflowStatus": ([StringFilter], False), + } + + +class Insight(AWSObject): + """ + `Insight `__ + """ + + resource_type = "AWS::SecurityHub::Insight" + + props: PropsDictType = { + "Filters": (AwsSecurityFindingFilters, True), + "GroupByAttribute": (str, True), + "Name": (str, True), + } + + +class ProductSubscription(AWSObject): + """ + `ProductSubscription `__ + """ + + resource_type = "AWS::SecurityHub::ProductSubscription" + + props: PropsDictType = { + "ProductArn": (str, True), + } + + class StandardsControl(AWSProperty): """ `StandardsControl `__ 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/timestream.py b/troposphere/timestream.py index dd7b7f00a..8bf2210cd 100644 --- a/troposphere/timestream.py +++ b/troposphere/timestream.py @@ -7,7 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags -from .validators import boolean +from .validators import boolean, integer class Database(AWSObject): @@ -37,6 +37,42 @@ class S3Configuration(AWSProperty): } +class LogDeliveryConfiguration(AWSProperty): + """ + `LogDeliveryConfiguration `__ + """ + + props: PropsDictType = { + "S3Configuration": (S3Configuration, True), + } + + +class InfluxDBInstance(AWSObject): + """ + `InfluxDBInstance `__ + """ + + resource_type = "AWS::Timestream::InfluxDBInstance" + + props: PropsDictType = { + "AllocatedStorage": (integer, False), + "Bucket": (str, False), + "DbInstanceType": (str, False), + "DbParameterGroupIdentifier": (str, False), + "DbStorageType": (str, False), + "DeploymentType": (str, False), + "LogDeliveryConfiguration": (LogDeliveryConfiguration, False), + "Name": (str, False), + "Organization": (str, False), + "Password": (str, False), + "PubliclyAccessible": (boolean, False), + "Tags": (Tags, False), + "Username": (str, False), + "VpcSecurityGroupIds": ([str], False), + "VpcSubnetIds": ([str], False), + } + + class ErrorReportConfiguration(AWSProperty): """ `ErrorReportConfiguration `__ diff --git a/troposphere/transfer.py b/troposphere/transfer.py index 0ddccef50..e9cba5554 100644 --- a/troposphere/transfer.py +++ b/troposphere/transfer.py @@ -89,6 +89,7 @@ class Connector(AWSObject): "AccessRole": (str, True), "As2Config": (As2Config, False), "LoggingRole": (str, False), + "SecurityPolicyName": (str, False), "SftpConfig": (SftpConfig, False), "Tags": (Tags, False), "Url": (str, True), @@ -151,6 +152,16 @@ class ProtocolDetails(AWSProperty): } +class S3StorageOptions(AWSProperty): + """ + `S3StorageOptions `__ + """ + + props: PropsDictType = { + "DirectoryListingOptimization": (str, False), + } + + class WorkflowDetail(AWSProperty): """ `WorkflowDetail `__ @@ -192,6 +203,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 +219,7 @@ class HomeDirectoryMapEntry(AWSProperty): props: PropsDictType = { "Entry": (str, True), "Target": (str, True), + "Type": (str, False), } @@ -318,11 +331,11 @@ class DecryptStepDetails(AWSProperty): """ props: PropsDictType = { - "DestinationFileLocation": (InputFileLocation, False), + "DestinationFileLocation": (InputFileLocation, True), "Name": (str, False), "OverwriteExisting": (str, False), "SourceFileLocation": (str, False), - "Type": (str, False), + "Type": (str, True), } diff --git a/troposphere/verifiedpermissions.py b/troposphere/verifiedpermissions.py index 86e0f902d..48b96eae8 100644 --- a/troposphere/verifiedpermissions.py +++ b/troposphere/verifiedpermissions.py @@ -9,6 +9,16 @@ from . import AWSObject, AWSProperty, PropsDictType +class CognitoGroupConfiguration(AWSProperty): + """ + `CognitoGroupConfiguration `__ + """ + + props: PropsDictType = { + "GroupEntityType": (str, True), + } + + class CognitoUserPoolConfiguration(AWSProperty): """ `CognitoUserPoolConfiguration `__ @@ -16,6 +26,7 @@ class CognitoUserPoolConfiguration(AWSProperty): props: PropsDictType = { "ClientIds": ([str], False), + "GroupConfiguration": (CognitoGroupConfiguration, False), "UserPoolArn": (str, True), } @@ -39,7 +50,7 @@ class IdentitySource(AWSObject): props: PropsDictType = { "Configuration": (IdentitySourceConfiguration, True), - "PolicyStoreId": (str, False), + "PolicyStoreId": (str, True), "PrincipalEntityType": (str, False), } @@ -98,7 +109,7 @@ class Policy(AWSObject): props: PropsDictType = { "Definition": (PolicyDefinition, True), - "PolicyStoreId": (str, False), + "PolicyStoreId": (str, True), } @@ -130,6 +141,7 @@ class PolicyStore(AWSObject): resource_type = "AWS::VerifiedPermissions::PolicyStore" props: PropsDictType = { + "Description": (str, False), "Schema": (SchemaDefinition, False), "ValidationSettings": (ValidationSettings, True), } @@ -144,19 +156,6 @@ class PolicyTemplate(AWSObject): props: PropsDictType = { "Description": (str, False), - "PolicyStoreId": (str, False), + "PolicyStoreId": (str, True), "Statement": (str, True), } - - -class IdentitySourceDetails(AWSProperty): - """ - `IdentitySourceDetails `__ - """ - - props: PropsDictType = { - "ClientIds": ([str], False), - "DiscoveryUrl": (str, False), - "OpenIdIssuer": (str, False), - "UserPoolArn": (str, False), - } 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), - } diff --git a/troposphere/workspacesweb.py b/troposphere/workspacesweb.py index 1c3cee7a4..2b252059c 100644 --- a/troposphere/workspacesweb.py +++ b/troposphere/workspacesweb.py @@ -96,7 +96,9 @@ class Portal(AWSObject): "BrowserSettingsArn": (str, False), "CustomerManagedKey": (str, False), "DisplayName": (str, False), + "InstanceType": (str, False), "IpAccessSettingsArn": (str, False), + "MaxConcurrentSessions": (double, False), "NetworkSettingsArn": (str, False), "Tags": (Tags, False), "TrustStoreArn": (str, False),