diff --git a/troposphere/bedrock.py b/troposphere/bedrock.py index 4df120d0d..e15e01cc8 100644 --- a/troposphere/bedrock.py +++ b/troposphere/bedrock.py @@ -459,6 +459,29 @@ class ModalityProcessingConfiguration(AWSProperty): } +class PIIEntitiesConfiguration(AWSProperty): + """ + `PIIEntitiesConfiguration `__ + """ + + props: PropsDictType = { + "PiiEntityTypes": ([str], False), + "RedactionMaskMode": (str, False), + } + + +class SensitiveDataConfiguration(AWSProperty): + """ + `SensitiveDataConfiguration `__ + """ + + props: PropsDictType = { + "DetectionMode": (str, False), + "DetectionScope": ([str], False), + "PiiEntitiesConfiguration": (PIIEntitiesConfiguration, False), + } + + class AudioOverrideConfiguration(AWSProperty): """ `AudioOverrideConfiguration `__ @@ -467,6 +490,7 @@ class AudioOverrideConfiguration(AWSProperty): props: PropsDictType = { "LanguageConfiguration": (AudioLanguageConfiguration, False), "ModalityProcessing": (ModalityProcessingConfiguration, False), + "SensitiveDataConfiguration": (SensitiveDataConfiguration, False), } @@ -487,6 +511,7 @@ class DocumentOverrideConfiguration(AWSProperty): props: PropsDictType = { "ModalityProcessing": (ModalityProcessingConfiguration, False), + "SensitiveDataConfiguration": (SensitiveDataConfiguration, False), "Splitter": (SplitterConfiguration, False), } @@ -498,6 +523,7 @@ class ImageOverrideConfiguration(AWSProperty): props: PropsDictType = { "ModalityProcessing": (ModalityProcessingConfiguration, False), + "SensitiveDataConfiguration": (SensitiveDataConfiguration, False), } @@ -521,6 +547,7 @@ class VideoOverrideConfiguration(AWSProperty): props: PropsDictType = { "ModalityProcessing": (ModalityProcessingConfiguration, False), + "SensitiveDataConfiguration": (SensitiveDataConfiguration, False), } @@ -842,6 +869,7 @@ class DataAutomationProject(AWSObject): "OverrideConfiguration": (OverrideConfiguration, False), "ProjectDescription": (str, False), "ProjectName": (str, True), + "ProjectType": (str, False), "StandardOutputConfiguration": (StandardOutputConfiguration, False), "Tags": (Tags, False), } @@ -2491,14 +2519,56 @@ class SqlKnowledgeBaseConfiguration(AWSProperty): } +class AudioSegmentationConfiguration(AWSProperty): + """ + `AudioSegmentationConfiguration `__ + """ + + props: PropsDictType = { + "FixedLengthDuration": (integer, True), + } + + +class AudioConfiguration(AWSProperty): + """ + `AudioConfiguration `__ + """ + + props: PropsDictType = { + "SegmentationConfiguration": (AudioSegmentationConfiguration, True), + } + + +class VideoSegmentationConfiguration(AWSProperty): + """ + `VideoSegmentationConfiguration `__ + """ + + props: PropsDictType = { + "FixedLengthDuration": (integer, True), + } + + +class VideoConfiguration(AWSProperty): + """ + `VideoConfiguration `__ + """ + + props: PropsDictType = { + "SegmentationConfiguration": (VideoSegmentationConfiguration, True), + } + + class BedrockEmbeddingModelConfiguration(AWSProperty): """ `BedrockEmbeddingModelConfiguration `__ """ props: PropsDictType = { + "Audio": ([AudioConfiguration], False), "Dimensions": (integer, False), "EmbeddingDataType": (str, False), + "Video": ([VideoConfiguration], False), } diff --git a/troposphere/bedrockagentcore.py b/troposphere/bedrockagentcore.py index f80070ed2..1c1c701ee 100644 --- a/troposphere/bedrockagentcore.py +++ b/troposphere/bedrockagentcore.py @@ -132,6 +132,48 @@ class AuthorizerConfiguration(AWSProperty): } +class LambdaInterceptorConfiguration(AWSProperty): + """ + `LambdaInterceptorConfiguration `__ + """ + + props: PropsDictType = { + "Arn": (str, True), + } + + +class InterceptorConfiguration(AWSProperty): + """ + `InterceptorConfiguration `__ + """ + + props: PropsDictType = { + "Lambda": (LambdaInterceptorConfiguration, True), + } + + +class InterceptorInputConfiguration(AWSProperty): + """ + `InterceptorInputConfiguration `__ + """ + + props: PropsDictType = { + "PassRequestHeaders": (boolean, True), + } + + +class GatewayInterceptorConfiguration(AWSProperty): + """ + `GatewayInterceptorConfiguration `__ + """ + + props: PropsDictType = { + "InputConfiguration": (InterceptorInputConfiguration, False), + "InterceptionPoints": ([str], True), + "Interceptor": (InterceptorConfiguration, True), + } + + class MCPGatewayConfiguration(AWSProperty): """ `MCPGatewayConfiguration `__ @@ -166,6 +208,7 @@ class Gateway(AWSObject): "AuthorizerType": (str, True), "Description": (str, False), "ExceptionLevel": (str, False), + "InterceptorConfigurations": ([GatewayInterceptorConfiguration], False), "KmsKeyArn": (str, False), "Name": (str, True), "ProtocolConfiguration": (GatewayProtocolConfiguration, False), @@ -195,6 +238,8 @@ class OAuthCredentialProvider(AWSProperty): props: PropsDictType = { "CustomParameters": (dict, False), + "DefaultReturnUrl": (str, False), + "GrantType": (str, False), "ProviderArn": (str, True), "Scopes": ([str], True), } diff --git a/troposphere/billingconductor.py b/troposphere/billingconductor.py index 4f8ce95eb..f563cc96a 100644 --- a/troposphere/billingconductor.py +++ b/troposphere/billingconductor.py @@ -88,8 +88,9 @@ class LineItemFilter(AWSProperty): props: PropsDictType = { "Attribute": (str, True), + "AttributeValues": ([str], False), "MatchOption": (str, True), - "Values": ([str], True), + "Values": ([str], False), } diff --git a/troposphere/cleanrooms.py b/troposphere/cleanrooms.py index 857de99cd..b3983aab4 100644 --- a/troposphere/cleanrooms.py +++ b/troposphere/cleanrooms.py @@ -117,6 +117,50 @@ class ErrorMessageConfiguration(AWSProperty): } +class SyntheticDataColumnProperties(AWSProperty): + """ + `SyntheticDataColumnProperties `__ + """ + + props: PropsDictType = { + "ColumnName": (str, True), + "ColumnType": (str, True), + "IsPredictiveValue": (boolean, True), + } + + +class ColumnClassificationDetails(AWSProperty): + """ + `ColumnClassificationDetails `__ + """ + + props: PropsDictType = { + "ColumnMapping": ([SyntheticDataColumnProperties], True), + } + + +class MLSyntheticDataParameters(AWSProperty): + """ + `MLSyntheticDataParameters `__ + """ + + props: PropsDictType = { + "ColumnClassification": (ColumnClassificationDetails, True), + "Epsilon": (double, True), + "MaxMembershipInferenceAttackScore": (double, True), + } + + +class SyntheticDataParameters(AWSProperty): + """ + `SyntheticDataParameters `__ + """ + + props: PropsDictType = { + "MlSyntheticDataParameters": (MLSyntheticDataParameters, True), + } + + class AnalysisTemplate(AWSObject): """ `AnalysisTemplate `__ @@ -134,6 +178,7 @@ class AnalysisTemplate(AWSObject): "Schema": (AnalysisSchema, False), "Source": (AnalysisSource, True), "SourceMetadata": (AnalysisSourceMetadata, False), + "SyntheticDataParameters": (SyntheticDataParameters, False), "Tags": (Tags, False), } @@ -191,6 +236,16 @@ class ModelTrainingPaymentConfig(AWSProperty): } +class SyntheticDataGenerationPaymentConfig(AWSProperty): + """ + `SyntheticDataGenerationPaymentConfig `__ + """ + + props: PropsDictType = { + "IsResponsible": (boolean, True), + } + + class MLPaymentConfig(AWSProperty): """ `MLPaymentConfig `__ @@ -199,6 +254,7 @@ class MLPaymentConfig(AWSProperty): props: PropsDictType = { "ModelInference": (ModelInferencePaymentConfig, False), "ModelTraining": (ModelTrainingPaymentConfig, False), + "SyntheticDataGeneration": (SyntheticDataGenerationPaymentConfig, False), } @@ -659,6 +715,16 @@ class MembershipModelTrainingPaymentConfig(AWSProperty): } +class MembershipSyntheticDataGenerationPaymentConfig(AWSProperty): + """ + `MembershipSyntheticDataGenerationPaymentConfig `__ + """ + + props: PropsDictType = { + "IsResponsible": (boolean, True), + } + + class MembershipMLPaymentConfig(AWSProperty): """ `MembershipMLPaymentConfig `__ @@ -667,6 +733,10 @@ class MembershipMLPaymentConfig(AWSProperty): props: PropsDictType = { "ModelInference": (MembershipModelInferencePaymentConfig, False), "ModelTraining": (MembershipModelTrainingPaymentConfig, False), + "SyntheticDataGeneration": ( + MembershipSyntheticDataGenerationPaymentConfig, + False, + ), } diff --git a/troposphere/cloudfront.py b/troposphere/cloudfront.py index bb3311091..dca0f49dc 100644 --- a/troposphere/cloudfront.py +++ b/troposphere/cloudfront.py @@ -29,6 +29,17 @@ ) +class IpamCidrConfig(AWSProperty): + """ + `IpamCidrConfig `__ + """ + + props: PropsDictType = { + "Cidr": (str, True), + "IpamPoolArn": (str, True), + } + + class AnycastIpList(AWSObject): """ `AnycastIpList `__ @@ -39,6 +50,7 @@ class AnycastIpList(AWSObject): props: PropsDictType = { "IpAddressType": (str, False), "IpCount": (integer, True), + "IpamCidrConfigs": ([IpamCidrConfig], False), "Name": (str, True), "Tags": (validate_tags_items_array, False), } @@ -1471,29 +1483,25 @@ class VpcOrigin(AWSObject): } -class AnycastIpListProperty(AWSProperty): +class DomainResult(AWSProperty): """ - `AnycastIpListProperty `__ + `DomainResult `__ """ props: PropsDictType = { - "AnycastIps": ([str], True), - "Arn": (str, True), - "Id": (str, True), - "IpAddressType": (str, False), - "IpCount": (integer, True), - "LastModifiedTime": (str, True), - "Name": (str, True), - "Status": (str, True), + "Domain": (str, False), + "Status": (str, False), } -class DomainResult(AWSProperty): +class IpamCidrConfigResult(AWSProperty): """ - `DomainResult `__ + `IpamCidrConfigResult `__ """ props: PropsDictType = { - "Domain": (str, False), + "AnycastIp": (str, False), + "Cidr": (str, False), + "IpamPoolArn": (str, False), "Status": (str, False), } diff --git a/troposphere/connect.py b/troposphere/connect.py index f9d037ce2..6156ae7d8 100644 --- a/troposphere/connect.py +++ b/troposphere/connect.py @@ -60,6 +60,16 @@ class ContactFlow(AWSObject): } +class ExternalInvocationConfiguration(AWSProperty): + """ + `ExternalInvocationConfiguration `__ + """ + + props: PropsDictType = { + "Enabled": (boolean, True), + } + + class ContactFlowModule(AWSObject): """ `ContactFlowModule `__ @@ -70,8 +80,10 @@ class ContactFlowModule(AWSObject): props: PropsDictType = { "Content": (str, True), "Description": (str, False), + "ExternalInvocationConfiguration": (ExternalInvocationConfiguration, False), "InstanceArn": (str, True), "Name": (str, True), + "Settings": (str, False), "State": (str, False), "Tags": (Tags, False), } @@ -156,6 +168,42 @@ class DataTableAttribute(AWSObject): } +class Value(AWSProperty): + """ + `Value `__ + """ + + props: PropsDictType = { + "AttributeId": (str, False), + "AttributeValue": (str, False), + } + + +class DataTableRecordProperty(AWSProperty): + """ + `DataTableRecordProperty `__ + """ + + props: PropsDictType = { + "PrimaryValues": ([Value], False), + "Values": ([Value], True), + } + + +class DataTableRecord(AWSObject): + """ + `DataTableRecord `__ + """ + + resource_type = "AWS::Connect::DataTableRecord" + + props: PropsDictType = { + "DataTableArn": (str, False), + "DataTableRecord": (DataTableRecordProperty, False), + "InstanceArn": (str, False), + } + + class AliasConfiguration(AWSProperty): """ `AliasConfiguration `__ @@ -1579,6 +1627,159 @@ class ViewVersion(AWSObject): } +class MediaItem(AWSProperty): + """ + `MediaItem `__ + """ + + props: PropsDictType = { + "Source": (str, False), + "Type": (str, True), + } + + +class WorkspacePage(AWSProperty): + """ + `WorkspacePage `__ + """ + + props: PropsDictType = { + "InputData": (str, False), + "Page": (str, True), + "ResourceArn": (str, True), + "Slug": (str, False), + } + + +class PaletteCanvas(AWSProperty): + """ + `PaletteCanvas `__ + """ + + props: PropsDictType = { + "ActiveBackground": (str, False), + "ContainerBackground": (str, False), + "PageBackground": (str, False), + } + + +class PaletteHeader(AWSProperty): + """ + `PaletteHeader `__ + """ + + props: PropsDictType = { + "Background": (str, False), + "InvertActionsColors": (boolean, False), + "Text": (str, False), + "TextHover": (str, False), + } + + +class PaletteNavigation(AWSProperty): + """ + `PaletteNavigation `__ + """ + + props: PropsDictType = { + "Background": (str, False), + "InvertActionsColors": (boolean, False), + "Text": (str, False), + "TextActive": (str, False), + "TextBackgroundActive": (str, False), + "TextBackgroundHover": (str, False), + "TextHover": (str, False), + } + + +class PalettePrimary(AWSProperty): + """ + `PalettePrimary `__ + """ + + props: PropsDictType = { + "Active": (str, False), + "ContrastText": (str, False), + "Default": (str, False), + } + + +class WorkspaceThemePalette(AWSProperty): + """ + `WorkspaceThemePalette `__ + """ + + props: PropsDictType = { + "Canvas": (PaletteCanvas, False), + "Header": (PaletteHeader, False), + "Navigation": (PaletteNavigation, False), + "Primary": (PalettePrimary, False), + } + + +class FontFamily(AWSProperty): + """ + `FontFamily `__ + """ + + props: PropsDictType = { + "Default": (str, False), + } + + +class WorkspaceThemeTypography(AWSProperty): + """ + `WorkspaceThemeTypography `__ + """ + + props: PropsDictType = { + "FontFamily": (FontFamily, False), + } + + +class WorkspaceThemeConfig(AWSProperty): + """ + `WorkspaceThemeConfig `__ + """ + + props: PropsDictType = { + "Palette": (WorkspaceThemePalette, False), + "Typography": (WorkspaceThemeTypography, False), + } + + +class WorkspaceTheme(AWSProperty): + """ + `WorkspaceTheme `__ + """ + + props: PropsDictType = { + "Dark": (WorkspaceThemeConfig, False), + "Light": (WorkspaceThemeConfig, False), + } + + +class Workspace(AWSObject): + """ + `Workspace `__ + """ + + resource_type = "AWS::Connect::Workspace" + + props: PropsDictType = { + "Associations": ([str], False), + "Description": (str, False), + "InstanceArn": (str, True), + "Media": ([MediaItem], False), + "Name": (str, True), + "Pages": ([WorkspacePage], False), + "Tags": (Tags, False), + "Theme": (WorkspaceTheme, False), + "Title": (str, False), + "Visibility": (str, False), + } + + class FieldValue(AWSProperty): """ `FieldValue `__ diff --git a/troposphere/connectcampaignsv2.py b/troposphere/connectcampaignsv2.py index 8fc6efcd2..6d7d8e391 100644 --- a/troposphere/connectcampaignsv2.py +++ b/troposphere/connectcampaignsv2.py @@ -97,6 +97,7 @@ class TelephonyOutboundConfig(AWSProperty): "AnswerMachineDetectionConfig": (AnswerMachineDetectionConfig, False), "ConnectContactFlowId": (str, True), "ConnectSourcePhoneNumber": (str, False), + "RingTimeout": (integer, False), } @@ -168,6 +169,39 @@ class TelephonyChannelSubtypeConfig(AWSProperty): } +class WhatsAppOutboundConfig(AWSProperty): + """ + `WhatsAppOutboundConfig `__ + """ + + props: PropsDictType = { + "ConnectSourcePhoneNumberArn": (str, True), + "WisdomTemplateArn": (str, True), + } + + +class WhatsAppOutboundMode(AWSProperty): + """ + `WhatsAppOutboundMode `__ + """ + + props: PropsDictType = { + "AgentlessConfig": (dict, False), + } + + +class WhatsAppChannelSubtypeConfig(AWSProperty): + """ + `WhatsAppChannelSubtypeConfig `__ + """ + + props: PropsDictType = { + "Capacity": (double, False), + "DefaultOutboundConfig": (WhatsAppOutboundConfig, True), + "OutboundMode": (WhatsAppOutboundMode, True), + } + + class ChannelSubtypeConfig(AWSProperty): """ `ChannelSubtypeConfig `__ @@ -177,6 +211,7 @@ class ChannelSubtypeConfig(AWSProperty): "Email": (EmailChannelSubtypeConfig, False), "Sms": (SmsChannelSubtypeConfig, False), "Telephony": (TelephonyChannelSubtypeConfig, False), + "WhatsApp": (WhatsAppChannelSubtypeConfig, False), } @@ -299,6 +334,7 @@ class CommunicationTimeConfig(AWSProperty): "LocalTimeZoneConfig": (LocalTimeZoneConfig, True), "Sms": (TimeWindow, False), "Telephony": (TimeWindow, False), + "WhatsApp": (TimeWindow, False), } @@ -343,7 +379,7 @@ class Campaign(AWSObject): resource_type = "AWS::ConnectCampaignsV2::Campaign" props: PropsDictType = { - "ChannelSubtypeConfig": (ChannelSubtypeConfig, True), + "ChannelSubtypeConfig": (ChannelSubtypeConfig, False), "CommunicationLimitsOverride": (CommunicationLimitsConfig, False), "CommunicationTimeConfig": (CommunicationTimeConfig, False), "ConnectCampaignFlowArn": (str, False), @@ -352,4 +388,5 @@ class Campaign(AWSObject): "Schedule": (Schedule, False), "Source": (Source, False), "Tags": (Tags, False), + "Type": (str, False), } diff --git a/troposphere/datazone.py b/troposphere/datazone.py index 1efb27052..85f1a5277 100644 --- a/troposphere/datazone.py +++ b/troposphere/datazone.py @@ -185,6 +185,16 @@ class IamPropertiesInput(AWSProperty): } +class MlflowPropertiesInput(AWSProperty): + """ + `MlflowPropertiesInput `__ + """ + + props: PropsDictType = { + "TrackingServerArn": (str, False), + } + + class UsernamePassword(AWSProperty): """ `UsernamePassword `__ @@ -275,6 +285,7 @@ class SparkEmrPropertiesInput(AWSProperty): "InstanceProfileArn": (str, False), "JavaVirtualEnv": (str, False), "LogUri": (str, False), + "ManagedEndpointArn": (str, False), "PythonVirtualEnv": (str, False), "RuntimeRole": (str, False), "TrustedCertificatesS3Uri": (str, False), @@ -319,6 +330,7 @@ class ConnectionPropertiesInput(AWSProperty): "GlueProperties": (GluePropertiesInput, False), "HyperPodProperties": (HyperPodPropertiesInput, False), "IamProperties": (IamPropertiesInput, False), + "MlflowProperties": (MlflowPropertiesInput, False), "RedshiftProperties": (RedshiftPropertiesInput, False), "S3Properties": (S3PropertiesInput, False), "SparkEmrProperties": (SparkEmrPropertiesInput, False), diff --git a/troposphere/devopsagent.py b/troposphere/devopsagent.py index 106f7925e..fede845e9 100644 --- a/troposphere/devopsagent.py +++ b/troposphere/devopsagent.py @@ -248,5 +248,6 @@ class Association(AWSObject): props: PropsDictType = { "AgentSpaceId": (str, True), "Configuration": (ServiceConfiguration, True), + "LinkedAssociationIds": ([str], False), "ServiceId": (str, True), } diff --git a/troposphere/ec2.py b/troposphere/ec2.py index 24463b0a9..3928abd32 100644 --- a/troposphere/ec2.py +++ b/troposphere/ec2.py @@ -261,12 +261,14 @@ class ClientVpnEndpoint(AWSObject): "Description": (str, False), "DisconnectOnSessionTimeout": (boolean, False), "DnsServers": ([str], False), + "EndpointIpAddressType": (str, False), "SecurityGroupIds": ([str], False), "SelfServicePortal": (validate_clientvpnendpoint_selfserviceportal, False), "ServerCertificateArn": (str, True), "SessionTimeoutHours": (integer, False), "SplitTunnel": (boolean, False), "TagSpecifications": ([TagSpecifications], False), + "TrafficIpAddressType": (str, False), "TransportProtocol": (str, False), "VpcId": (str, False), "VpnPort": (validate_clientvpnendpoint_vpnport, False), @@ -524,6 +526,7 @@ class InstanceRequirementsRequest(AWSProperty): "NetworkBandwidthGbps": (NetworkBandwidthGbpsRequest, False), "NetworkInterfaceCount": (NetworkInterfaceCountRequest, False), "OnDemandMaxPricePercentageOverLowestPrice": (integer, False), + "RequireEncryptionInTransit": (boolean, False), "RequireHibernateSupport": (boolean, False), "SpotMaxPricePercentageOverLowestPrice": (integer, False), "TotalLocalStorageGB": (TotalLocalStorageGBRequest, False), @@ -2069,6 +2072,7 @@ class NetworkInterface(AWSObject): "Ipv6Prefixes": ([Ipv6PrefixSpecification], False), "PrivateIpAddress": (str, False), "PrivateIpAddresses": ([PrivateIpAddressSpecification], False), + "PublicIpDnsHostnameTypeSpecification": (str, False), "SecondaryPrivateIpAddressCount": (integer, False), "SourceDestCheck": (boolean, False), "SubnetId": (str, True), @@ -2624,6 +2628,7 @@ class SpotFleet(AWSObject): props: PropsDictType = { "SpotFleetRequestConfigData": (SpotFleetRequestConfigData, True), + "Tags": (Tags, False), } @@ -3959,6 +3964,19 @@ class PeeringAttachmentStatus(AWSProperty): } +class PublicIpDnsNameOptions(AWSProperty): + """ + `PublicIpDnsNameOptions `__ + """ + + props: PropsDictType = { + "DnsHostnameType": (str, False), + "PublicDualStackDnsName": (str, False), + "PublicIpv4DnsName": (str, False), + "PublicIpv6DnsName": (str, False), + } + + class SecurityGroupRule(AWSProperty): """ `SecurityGroupRule `__ diff --git a/troposphere/ecs.py b/troposphere/ecs.py index c7fe429d7..69c6538a3 100644 --- a/troposphere/ecs.py +++ b/troposphere/ecs.py @@ -226,6 +226,7 @@ class InstanceLaunchTemplate(AWSProperty): """ props: PropsDictType = { + "CapacityOptionType": (str, False), "Ec2InstanceProfileArn": (str, True), "InstanceRequirements": (InstanceRequirementsRequest, False), "Monitoring": (str, False), @@ -1362,6 +1363,17 @@ class TaskSet(AWSObject): } +class AutoScalingArns(AWSProperty): + """ + `AutoScalingArns `__ + """ + + props: PropsDictType = { + "ApplicationAutoScalingPolicies": ([str], False), + "ScalableTarget": (str, False), + } + + class ExpressGatewayServiceStatus(AWSProperty): """ `ExpressGatewayServiceStatus `__ @@ -1372,6 +1384,21 @@ class ExpressGatewayServiceStatus(AWSProperty): } +class IngressPathArns(AWSProperty): + """ + `IngressPathArns `__ + """ + + props: PropsDictType = { + "CertificateArn": (str, False), + "ListenerArn": (str, False), + "ListenerRuleArn": (str, False), + "LoadBalancerArn": (str, False), + "LoadBalancerSecurityGroups": ([str], False), + "TargetGroupArns": ([str], False), + } + + class IngressPathSummary(AWSProperty): """ `IngressPathSummary `__ diff --git a/troposphere/eks.py b/troposphere/eks.py index 691271dd4..8889a0e2b 100644 --- a/troposphere/eks.py +++ b/troposphere/eks.py @@ -526,6 +526,19 @@ class LaunchTemplateSpecification(AWSProperty): } +class NodeRepairConfigOverrides(AWSProperty): + """ + `NodeRepairConfigOverrides `__ + """ + + props: PropsDictType = { + "MinRepairWaitTimeMins": (integer, False), + "NodeMonitoringCondition": (str, False), + "NodeUnhealthyReason": (str, False), + "RepairAction": (str, False), + } + + class NodeRepairConfig(AWSProperty): """ `NodeRepairConfig `__ @@ -533,6 +546,11 @@ class NodeRepairConfig(AWSProperty): props: PropsDictType = { "Enabled": (boolean, False), + "MaxParallelNodesRepairedCount": (integer, False), + "MaxParallelNodesRepairedPercentage": (integer, False), + "MaxUnhealthyNodeThresholdCount": (integer, False), + "MaxUnhealthyNodeThresholdPercentage": (integer, False), + "NodeRepairConfigOverrides": ([NodeRepairConfigOverrides], False), } diff --git a/troposphere/emr.py b/troposphere/emr.py index 687395afe..5428e79cd 100644 --- a/troposphere/emr.py +++ b/troposphere/emr.py @@ -561,8 +561,10 @@ class Step(AWSObject): props: PropsDictType = { "ActionOnFailure": (action_on_failure_validator, True), + "EncryptionKeyArn": (str, False), "HadoopJarStep": (HadoopJarStepConfig, True), "JobFlowId": (str, True), + "LogUri": (str, False), "Name": (str, True), } diff --git a/troposphere/entityresolution.py b/troposphere/entityresolution.py index 2d442a5e7..cf11c115c 100644 --- a/troposphere/entityresolution.py +++ b/troposphere/entityresolution.py @@ -211,6 +211,17 @@ class InputSource(AWSProperty): } +class CustomerProfilesIntegrationConfig(AWSProperty): + """ + `CustomerProfilesIntegrationConfig `__ + """ + + props: PropsDictType = { + "DomainArn": (str, True), + "ObjectTypeArn": (str, True), + } + + class OutputAttribute(AWSProperty): """ `OutputAttribute `__ @@ -229,9 +240,10 @@ class OutputSource(AWSProperty): props: PropsDictType = { "ApplyNormalization": (boolean, False), + "CustomerProfilesIntegrationConfig": (CustomerProfilesIntegrationConfig, False), "KMSArn": (str, False), "Output": ([OutputAttribute], True), - "OutputS3Path": (str, True), + "OutputS3Path": (str, False), } diff --git a/troposphere/fsx.py b/troposphere/fsx.py index 2bd18b26e..96643bc5b 100644 --- a/troposphere/fsx.py +++ b/troposphere/fsx.py @@ -334,6 +334,49 @@ class S3AccessPoint(AWSProperty): } +class OntapUnixFileSystemUser(AWSProperty): + """ + `OntapUnixFileSystemUser `__ + """ + + props: PropsDictType = { + "Name": (str, True), + } + + +class OntapWindowsFileSystemUser(AWSProperty): + """ + `OntapWindowsFileSystemUser `__ + """ + + props: PropsDictType = { + "Name": (str, True), + } + + +class OntapFileSystemIdentity(AWSProperty): + """ + `OntapFileSystemIdentity `__ + """ + + props: PropsDictType = { + "Type": (str, True), + "UnixUser": (OntapUnixFileSystemUser, False), + "WindowsUser": (OntapWindowsFileSystemUser, False), + } + + +class S3AccessPointOntapConfiguration(AWSProperty): + """ + `S3AccessPointOntapConfiguration `__ + """ + + props: PropsDictType = { + "FileSystemIdentity": (OntapFileSystemIdentity, True), + "VolumeId": (str, True), + } + + class FileSystemGID(AWSProperty): """ `FileSystemGID `__ @@ -387,7 +430,8 @@ class S3AccessPointAttachment(AWSObject): props: PropsDictType = { "Name": (str, True), - "OpenZFSConfiguration": (S3AccessPointOpenZFSConfiguration, True), + "OntapConfiguration": (S3AccessPointOntapConfiguration, False), + "OpenZFSConfiguration": (S3AccessPointOpenZFSConfiguration, False), "S3AccessPoint": (S3AccessPoint, False), "Type": (str, True), } diff --git a/troposphere/glue.py b/troposphere/glue.py index ddae93ced..1c30ae684 100644 --- a/troposphere/glue.py +++ b/troposphere/glue.py @@ -587,6 +587,20 @@ class DevEndpoint(AWSObject): } +class IdentityCenterConfiguration(AWSObject): + """ + `IdentityCenterConfiguration `__ + """ + + resource_type = "AWS::Glue::IdentityCenterConfiguration" + + props: PropsDictType = { + "InstanceArn": (str, True), + "Scopes": ([str], False), + "UserBackgroundSessionsEnabled": (boolean, False), + } + + class IntegrationConfig(AWSProperty): """ `IntegrationConfig `__ diff --git a/troposphere/groundstation.py b/troposphere/groundstation.py index 55de93a8c..57a7b6381 100644 --- a/troposphere/groundstation.py +++ b/troposphere/groundstation.py @@ -186,106 +186,141 @@ class Config(AWSObject): class SocketAddress(AWSProperty): """ - `SocketAddress `__ + `SocketAddress `__ """ props: PropsDictType = { - "Name": (str, False), - "Port": (integer, False), + "Name": (str, True), + "Port": (integer, True), } class ConnectionDetails(AWSProperty): """ - `ConnectionDetails `__ + `ConnectionDetails `__ """ props: PropsDictType = { "Mtu": (integer, False), - "SocketAddress": (SocketAddress, False), + "SocketAddress": (SocketAddress, True), } class IntegerRange(AWSProperty): """ - `IntegerRange `__ + `IntegerRange `__ """ props: PropsDictType = { - "Maximum": (integer, False), - "Minimum": (integer, False), + "Maximum": (integer, True), + "Minimum": (integer, True), } class RangedSocketAddress(AWSProperty): """ - `RangedSocketAddress `__ + `RangedSocketAddress `__ """ props: PropsDictType = { - "Name": (str, False), - "PortRange": (IntegerRange, False), + "Name": (str, True), + "PortRange": (IntegerRange, True), } class RangedConnectionDetails(AWSProperty): """ - `RangedConnectionDetails `__ + `RangedConnectionDetails `__ """ props: PropsDictType = { "Mtu": (integer, False), - "SocketAddress": (RangedSocketAddress, False), + "SocketAddress": (RangedSocketAddress, True), } -class AwsGroundStationAgentEndpoint(AWSProperty): +class DownlinkConnectionDetails(AWSProperty): """ - `AwsGroundStationAgentEndpoint `__ + `DownlinkConnectionDetails `__ + """ + + props: PropsDictType = { + "AgentIpAndPortAddress": (RangedConnectionDetails, True), + "EgressAddressAndPort": (ConnectionDetails, True), + } + + +class DownlinkDataflowDetails(AWSProperty): + """ + `DownlinkDataflowDetails `__ + """ + + props: PropsDictType = { + "AgentConnectionDetails": (DownlinkConnectionDetails, True), + } + + +class DownlinkAwsGroundStationAgentEndpointDetails(AWSProperty): + """ + `DownlinkAwsGroundStationAgentEndpointDetails `__ """ props: PropsDictType = { "AgentStatus": (str, False), "AuditResults": (str, False), - "EgressAddress": (ConnectionDetails, False), - "IngressAddress": (RangedConnectionDetails, False), - "Name": (str, False), + "DataflowDetails": (DownlinkDataflowDetails, True), + "Name": (str, True), } -class DataflowEndpoint(AWSProperty): +class UplinkConnectionDetails(AWSProperty): """ - `DataflowEndpoint `__ + `UplinkConnectionDetails `__ """ props: PropsDictType = { - "Address": (SocketAddress, False), - "Mtu": (integer, False), - "Name": (str, False), + "AgentIpAndPortAddress": (RangedConnectionDetails, True), + "IngressAddressAndPort": (ConnectionDetails, True), } -class SecurityDetails(AWSProperty): +class UplinkDataflowDetails(AWSProperty): """ - `SecurityDetails `__ + `UplinkDataflowDetails `__ """ props: PropsDictType = { - "RoleArn": (str, False), - "SecurityGroupIds": ([str], False), - "SubnetIds": ([str], False), + "AgentConnectionDetails": (UplinkConnectionDetails, True), + } + + +class UplinkAwsGroundStationAgentEndpointDetails(AWSProperty): + """ + `UplinkAwsGroundStationAgentEndpointDetails `__ + """ + + props: PropsDictType = { + "AgentStatus": (str, False), + "AuditResults": (str, False), + "DataflowDetails": (UplinkDataflowDetails, True), + "Name": (str, True), } class EndpointDetails(AWSProperty): """ - `EndpointDetails `__ + `EndpointDetails `__ """ props: PropsDictType = { - "AwsGroundStationAgentEndpoint": (AwsGroundStationAgentEndpoint, False), - "Endpoint": (DataflowEndpoint, False), - "SecurityDetails": (SecurityDetails, False), + "DownlinkAwsGroundStationAgentEndpoint": ( + DownlinkAwsGroundStationAgentEndpointDetails, + False, + ), + "UplinkAwsGroundStationAgentEndpoint": ( + UplinkAwsGroundStationAgentEndpointDetails, + False, + ), } @@ -304,6 +339,60 @@ class DataflowEndpointGroup(AWSObject): } +class DownlinkAwsGroundStationAgentEndpoint(AWSProperty): + """ + `DownlinkAwsGroundStationAgentEndpoint `__ + """ + + props: PropsDictType = { + "DataflowDetails": (DownlinkDataflowDetails, True), + "Name": (str, True), + } + + +class UplinkAwsGroundStationAgentEndpoint(AWSProperty): + """ + `UplinkAwsGroundStationAgentEndpoint `__ + """ + + props: PropsDictType = { + "DataflowDetails": (UplinkDataflowDetails, True), + "Name": (str, True), + } + + +class CreateEndpointDetails(AWSProperty): + """ + `CreateEndpointDetails `__ + """ + + props: PropsDictType = { + "DownlinkAwsGroundStationAgentEndpoint": ( + DownlinkAwsGroundStationAgentEndpoint, + False, + ), + "UplinkAwsGroundStationAgentEndpoint": ( + UplinkAwsGroundStationAgentEndpoint, + False, + ), + } + + +class DataflowEndpointGroupV2(AWSObject): + """ + `DataflowEndpointGroupV2 `__ + """ + + resource_type = "AWS::GroundStation::DataflowEndpointGroupV2" + + props: PropsDictType = { + "ContactPostPassDurationSeconds": (integer, False), + "ContactPrePassDurationSeconds": (integer, False), + "Endpoints": ([CreateEndpointDetails], False), + "Tags": (Tags, False), + } + + class DataflowEdge(AWSProperty): """ `DataflowEdge `__ @@ -345,3 +434,41 @@ class MissionProfile(AWSObject): "Tags": (Tags, False), "TrackingConfigArn": (str, True), } + + +class AwsGroundStationAgentEndpoint(AWSProperty): + """ + `AwsGroundStationAgentEndpoint `__ + """ + + props: PropsDictType = { + "AgentStatus": (str, False), + "AuditResults": (str, False), + "EgressAddress": (ConnectionDetails, False), + "IngressAddress": (RangedConnectionDetails, False), + "Name": (str, False), + } + + +class DataflowEndpoint(AWSProperty): + """ + `DataflowEndpoint `__ + """ + + props: PropsDictType = { + "Address": (SocketAddress, False), + "Mtu": (integer, False), + "Name": (str, False), + } + + +class SecurityDetails(AWSProperty): + """ + `SecurityDetails `__ + """ + + props: PropsDictType = { + "RoleArn": (str, False), + "SecurityGroupIds": ([str], False), + "SubnetIds": ([str], False), + } diff --git a/troposphere/kafkaconnect.py b/troposphere/kafkaconnect.py index 35a8a2981..a28f55f95 100644 --- a/troposphere/kafkaconnect.py +++ b/troposphere/kafkaconnect.py @@ -223,6 +223,7 @@ class Connector(AWSObject): "KafkaClusterEncryptionInTransit": (KafkaClusterEncryptionInTransit, True), "KafkaConnectVersion": (str, True), "LogDelivery": (LogDelivery, False), + "NetworkType": (str, False), "Plugins": ([Plugin], True), "ServiceExecutionRoleArn": (str, True), "Tags": (Tags, False), diff --git a/troposphere/lex.py b/troposphere/lex.py index 89a05d755..0edff8ec0 100644 --- a/troposphere/lex.py +++ b/troposphere/lex.py @@ -96,13 +96,27 @@ class BuildtimeSettings(AWSProperty): } +class IntentDisambiguationSettings(AWSProperty): + """ + `IntentDisambiguationSettings `__ + """ + + props: PropsDictType = { + "CustomDisambiguationMessage": (str, False), + "Enabled": (boolean, True), + "MaxDisambiguationIntents": (integer, False), + } + + class NluImprovementSpecification(AWSProperty): """ `NluImprovementSpecification `__ """ props: PropsDictType = { + "AssistedNluMode": (str, False), "Enabled": (boolean, True), + "IntentDisambiguationSettings": (IntentDisambiguationSettings, False), } @@ -914,7 +928,8 @@ class Specifications(AWSProperty): """ props: PropsDictType = { - "SlotTypeId": (str, True), + "SlotTypeId": (str, False), + "SlotTypeName": (str, False), "ValueElicitationSetting": (SubSlotValueElicitationSetting, True), } @@ -966,6 +981,7 @@ class Intent(AWSProperty): "BedrockAgentIntentConfiguration": (BedrockAgentIntentConfiguration, False), "Description": (str, False), "DialogCodeHook": (DialogCodeHookSetting, False), + "DisplayName": (str, False), "FulfillmentCodeHook": (FulfillmentCodeHookSetting, False), "InitialResponseSetting": (InitialResponseSetting, False), "InputContexts": ([InputContext], False), @@ -990,7 +1006,8 @@ class SubSlotTypeComposition(AWSProperty): props: PropsDictType = { "Name": (str, True), - "SlotTypeId": (str, True), + "SlotTypeId": (str, False), + "SlotTypeName": (str, False), } @@ -1105,6 +1122,27 @@ class SlotType(AWSProperty): } +class SpeechFoundationModel(AWSProperty): + """ + `SpeechFoundationModel `__ + """ + + props: PropsDictType = { + "ModelArn": (str, True), + "VoiceId": (str, False), + } + + +class UnifiedSpeechSettings(AWSProperty): + """ + `UnifiedSpeechSettings `__ + """ + + props: PropsDictType = { + "SpeechFoundationModel": (SpeechFoundationModel, True), + } + + class VoiceSettings(AWSProperty): """ `VoiceSettings `__ @@ -1129,6 +1167,8 @@ class BotLocale(AWSProperty): "LocaleId": (str, True), "NluConfidenceThreshold": (double, True), "SlotTypes": ([SlotType], False), + "SpeechDetectionSensitivity": (str, False), + "UnifiedSpeechSettings": (UnifiedSpeechSettings, False), "VoiceSettings": (VoiceSettings, False), } diff --git a/troposphere/logs.py b/troposphere/logs.py index 2b9937437..9f41c69e4 100644 --- a/troposphere/logs.py +++ b/troposphere/logs.py @@ -493,6 +493,7 @@ class ParseToOCSF(AWSProperty): props: PropsDictType = { "EventSource": (str, True), + "MappingVersion": (str, False), "OcsfVersion": (str, True), "Source": (str, False), } diff --git a/troposphere/msk.py b/troposphere/msk.py index 679aed4c1..1b6db21ab 100644 --- a/troposphere/msk.py +++ b/troposphere/msk.py @@ -101,6 +101,7 @@ class ConnectivityInfo(AWSProperty): """ props: PropsDictType = { + "NetworkType": (str, False), "PublicAccess": (PublicAccess, False), "VpcConnectivity": (VpcConnectivity, False), } diff --git a/troposphere/networkmanager.py b/troposphere/networkmanager.py index c407316b8..642f94c5c 100644 --- a/troposphere/networkmanager.py +++ b/troposphere/networkmanager.py @@ -61,6 +61,7 @@ class ConnectAttachment(AWSObject): False, ), "ProposedSegmentChange": (ProposedSegmentChange, False), + "RoutingPolicyLabel": (str, False), "Tags": (Tags, False), "TransportAttachmentId": (str, True), } @@ -109,6 +110,20 @@ class CoreNetwork(AWSObject): } +class CoreNetworkPrefixListAssociation(AWSObject): + """ + `CoreNetworkPrefixListAssociation `__ + """ + + resource_type = "AWS::NetworkManager::CoreNetworkPrefixListAssociation" + + props: PropsDictType = { + "CoreNetworkId": (str, True), + "PrefixListAlias": (str, True), + "PrefixListArn": (str, True), + } + + class CustomerGatewayAssociation(AWSObject): """ `CustomerGatewayAssociation `__ @@ -184,6 +199,7 @@ class DirectConnectGatewayAttachment(AWSObject): False, ), "ProposedSegmentChange": (ProposedSegmentChange, False), + "RoutingPolicyLabel": (str, False), "Tags": (Tags, False), } @@ -276,6 +292,7 @@ class SiteToSiteVpnAttachment(AWSObject): False, ), "ProposedSegmentChange": (ProposedSegmentChange, False), + "RoutingPolicyLabel": (str, False), "Tags": (Tags, False), "VpnConnectionArn": (str, True), } @@ -323,6 +340,7 @@ class TransitGatewayRouteTableAttachment(AWSObject): False, ), "ProposedSegmentChange": (ProposedSegmentChange, False), + "RoutingPolicyLabel": (str, False), "Tags": (Tags, False), "TransitGatewayRouteTableArn": (str, True), } @@ -356,6 +374,7 @@ class VpcAttachment(AWSObject): False, ), "ProposedSegmentChange": (ProposedSegmentChange, False), + "RoutingPolicyLabel": (str, False), "SubnetArns": ([str], True), "Tags": (Tags, False), "VpcArn": (str, True), diff --git a/troposphere/observabilityadmin.py b/troposphere/observabilityadmin.py index 2f08d5f79..c476b24f8 100644 --- a/troposphere/observabilityadmin.py +++ b/troposphere/observabilityadmin.py @@ -104,6 +104,64 @@ class OrganizationCentralizationRule(AWSObject): } +class AdvancedFieldSelector(AWSProperty): + """ + `AdvancedFieldSelector `__ + """ + + props: PropsDictType = { + "EndsWith": ([str], False), + "Equals": ([str], False), + "Field": (str, False), + "NotEndsWith": ([str], False), + "NotEquals": ([str], False), + "NotStartsWith": ([str], False), + "StartsWith": ([str], False), + } + + +class AdvancedEventSelector(AWSProperty): + """ + `AdvancedEventSelector `__ + """ + + props: PropsDictType = { + "FieldSelectors": ([AdvancedFieldSelector], True), + "Name": (str, False), + } + + +class CloudtrailParameters(AWSProperty): + """ + `CloudtrailParameters `__ + """ + + props: PropsDictType = { + "AdvancedEventSelectors": ([AdvancedEventSelector], True), + } + + +class ELBLoadBalancerLoggingParameters(AWSProperty): + """ + `ELBLoadBalancerLoggingParameters `__ + """ + + props: PropsDictType = { + "FieldDelimiter": (str, False), + "OutputFormat": (str, False), + } + + +class LogDeliveryParameters(AWSProperty): + """ + `LogDeliveryParameters `__ + """ + + props: PropsDictType = { + "LogTypes": ([str], False), + } + + class VPCFlowLogParameters(AWSProperty): """ `VPCFlowLogParameters `__ @@ -116,16 +174,109 @@ class VPCFlowLogParameters(AWSProperty): } +class SingleHeader(AWSProperty): + """ + `SingleHeader `__ + """ + + props: PropsDictType = { + "Name": (str, True), + } + + +class FieldToMatch(AWSProperty): + """ + `FieldToMatch `__ + """ + + props: PropsDictType = { + "Method": (str, False), + "QueryString": (str, False), + "SingleHeader": (SingleHeader, False), + "UriPath": (str, False), + } + + +class ActionCondition(AWSProperty): + """ + `ActionCondition `__ + """ + + props: PropsDictType = { + "Action": (str, False), + } + + +class LabelNameCondition(AWSProperty): + """ + `LabelNameCondition `__ + """ + + props: PropsDictType = { + "LabelName": (str, False), + } + + +class Condition(AWSProperty): + """ + `Condition `__ + """ + + props: PropsDictType = { + "ActionCondition": (ActionCondition, False), + "LabelNameCondition": (LabelNameCondition, False), + } + + +class Filter(AWSProperty): + """ + `Filter `__ + """ + + props: PropsDictType = { + "Behavior": (str, False), + "Conditions": ([Condition], False), + "Requirement": (str, False), + } + + +class LoggingFilter(AWSProperty): + """ + `LoggingFilter `__ + """ + + props: PropsDictType = { + "DefaultBehavior": (str, False), + "Filters": ([Filter], False), + } + + +class WAFLoggingParameters(AWSProperty): + """ + `WAFLoggingParameters `__ + """ + + props: PropsDictType = { + "LogType": (str, False), + "LoggingFilter": (LoggingFilter, False), + "RedactedFields": ([FieldToMatch], False), + } + + class TelemetryDestinationConfiguration(AWSProperty): """ `TelemetryDestinationConfiguration `__ """ props: PropsDictType = { + "CloudtrailParameters": (CloudtrailParameters, False), "DestinationPattern": (str, False), "DestinationType": (str, False), + "ELBLoadBalancerLoggingParameters": (ELBLoadBalancerLoggingParameters, False), + "LogDeliveryParameters": (LogDeliveryParameters, False), "RetentionInDays": (integer, False), "VPCFlowLogParameters": (VPCFlowLogParameters, False), + "WAFLoggingParameters": (WAFLoggingParameters, False), } @@ -138,6 +289,7 @@ class TelemetryRuleProperty(AWSProperty): "DestinationConfiguration": (TelemetryDestinationConfiguration, False), "ResourceType": (str, True), "SelectionCriteria": (str, False), + "TelemetrySourceTypes": ([str], False), "TelemetryType": (str, True), } diff --git a/troposphere/paymentcryptography.py b/troposphere/paymentcryptography.py index 6587abed0..fb2b55e9f 100644 --- a/troposphere/paymentcryptography.py +++ b/troposphere/paymentcryptography.py @@ -67,5 +67,17 @@ class Key(AWSObject): "Exportable": (boolean, True), "KeyAttributes": (KeyAttributes, True), "KeyCheckValueAlgorithm": (str, False), + "ReplicationRegions": ([str], False), "Tags": (Tags, False), } + + +class ReplicationStatusType(AWSProperty): + """ + `ReplicationStatusType `__ + """ + + props: PropsDictType = { + "Status": (str, True), + "StatusMessage": (str, False), + } diff --git a/troposphere/quicksight.py b/troposphere/quicksight.py index 231a99916..8fd53c0d4 100644 --- a/troposphere/quicksight.py +++ b/troposphere/quicksight.py @@ -9407,6 +9407,29 @@ class DashboardError(AWSProperty): } +class GridLayoutElementBackgroundStyle(AWSProperty): + """ + `GridLayoutElementBackgroundStyle `__ + """ + + props: PropsDictType = { + "Color": (str, False), + "Visibility": (str, False), + } + + +class GridLayoutElementBorderStyle(AWSProperty): + """ + `GridLayoutElementBorderStyle `__ + """ + + props: PropsDictType = { + "Color": (str, False), + "Visibility": (str, False), + "Width": (str, False), + } + + class NetworkInterface(AWSProperty): """ `NetworkInterface `__ diff --git a/troposphere/robomaker.py b/troposphere/robomaker.py index 8b831ac4f..6028f7481 100644 --- a/troposphere/robomaker.py +++ b/troposphere/robomaker.py @@ -45,7 +45,7 @@ class RobotSoftwareSuite(AWSProperty): props: PropsDictType = { "Name": (str, True), - "Version": (str, False), + "Version": (str, True), } @@ -70,10 +70,9 @@ class RobotApplication(AWSObject): props: PropsDictType = { "CurrentRevisionId": (str, False), - "Environment": (str, False), "Name": (str, False), "RobotSoftwareSuite": (RobotSoftwareSuite, True), - "Sources": ([SourceConfig], False), + "Sources": ([SourceConfig], True), "Tags": (dict, False), } @@ -109,7 +108,7 @@ class SimulationSoftwareSuite(AWSProperty): props: PropsDictType = { "Name": (str, True), - "Version": (str, False), + "Version": (str, True), } @@ -122,12 +121,11 @@ class SimulationApplication(AWSObject): props: PropsDictType = { "CurrentRevisionId": (str, False), - "Environment": (str, False), "Name": (str, False), - "RenderingEngine": (RenderingEngine, False), + "RenderingEngine": (RenderingEngine, True), "RobotSoftwareSuite": (RobotSoftwareSuite, True), "SimulationSoftwareSuite": (SimulationSoftwareSuite, True), - "Sources": ([SourceConfig], False), + "Sources": ([SourceConfig], True), "Tags": (dict, False), } diff --git a/troposphere/route53.py b/troposphere/route53.py index 09a37dbab..1b92507d3 100644 --- a/troposphere/route53.py +++ b/troposphere/route53.py @@ -107,6 +107,16 @@ class HostedZoneConfiguration(AWSProperty): } +class HostedZoneFeatures(AWSProperty): + """ + `HostedZoneFeatures `__ + """ + + props: PropsDictType = { + "EnableAcceleratedRecovery": (boolean, False), + } + + class HostedZoneVPCs(AWSProperty): """ `HostedZoneVPCs `__ @@ -137,6 +147,7 @@ class HostedZone(AWSObject): props: PropsDictType = { "HostedZoneConfig": (HostedZoneConfiguration, False), + "HostedZoneFeatures": (HostedZoneFeatures, False), "HostedZoneTags": (Tags, False), "Name": (str, False), "QueryLoggingConfig": (QueryLoggingConfig, False), diff --git a/troposphere/route53resolver.py b/troposphere/route53resolver.py index 1b498b56c..61e2d29a2 100644 --- a/troposphere/route53resolver.py +++ b/troposphere/route53resolver.py @@ -7,7 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags -from .validators import integer +from .validators import boolean, integer from .validators.route53resolver import validate_ruletype @@ -146,8 +146,10 @@ class ResolverEndpoint(AWSObject): "PreferredInstanceType": (str, False), "Protocols": ([str], False), "ResolverEndpointType": (str, False), + "RniEnhancedMetricsEnabled": (boolean, False), "SecurityGroupIds": ([str], True), "Tags": (Tags, False), + "TargetNameServerMetricsEnabled": (boolean, False), } diff --git a/troposphere/s3.py b/troposphere/s3.py index bd426f7d7..533c4a1ac 100644 --- a/troposphere/s3.py +++ b/troposphere/s3.py @@ -84,8 +84,8 @@ class AccessGrantsLocation(AWSObject): resource_type = "AWS::S3::AccessGrantsLocation" props: PropsDictType = { - "IamRoleArn": (str, False), - "LocationScope": (str, False), + "IamRoleArn": (str, True), + "LocationScope": (str, True), "Tags": (Tags, False), } diff --git a/troposphere/s3tables.py b/troposphere/s3tables.py index 8467c23ef..e37a3219a 100644 --- a/troposphere/s3tables.py +++ b/troposphere/s3tables.py @@ -78,6 +78,16 @@ class SnapshotManagement(AWSProperty): } +class StorageClassConfiguration(AWSProperty): + """ + `StorageClassConfiguration `__ + """ + + props: PropsDictType = { + "StorageClass": (str, False), + } + + class Table(AWSObject): """ `Table `__ @@ -91,6 +101,7 @@ class Table(AWSObject): "Namespace": (str, True), "OpenTableFormat": (str, True), "SnapshotManagement": (SnapshotManagement, False), + "StorageClassConfiguration": (StorageClassConfiguration, False), "TableBucketARN": (str, True), "TableName": (str, True), "Tags": (Tags, False), @@ -141,6 +152,7 @@ class TableBucket(AWSObject): props: PropsDictType = { "EncryptionConfiguration": (EncryptionConfiguration, False), "MetricsConfiguration": (MetricsConfiguration, False), + "StorageClassConfiguration": (StorageClassConfiguration, False), "TableBucketName": (str, True), "Tags": (Tags, False), "UnreferencedFileRemoval": (UnreferencedFileRemoval, False), diff --git a/troposphere/s3vectors.py b/troposphere/s3vectors.py index 8f63964b5..16321a5bd 100644 --- a/troposphere/s3vectors.py +++ b/troposphere/s3vectors.py @@ -10,6 +10,17 @@ from .validators import integer +class EncryptionConfiguration(AWSProperty): + """ + `EncryptionConfiguration `__ + """ + + props: PropsDictType = { + "KmsKeyArn": (str, False), + "SseType": (str, False), + } + + class MetadataConfiguration(AWSProperty): """ `MetadataConfiguration `__ @@ -31,6 +42,7 @@ class Index(AWSObject): "DataType": (str, True), "Dimension": (integer, True), "DistanceMetric": (str, True), + "EncryptionConfiguration": (EncryptionConfiguration, False), "IndexName": (str, False), "MetadataConfiguration": (MetadataConfiguration, False), "VectorBucketArn": (str, False), @@ -38,17 +50,6 @@ class Index(AWSObject): } -class EncryptionConfiguration(AWSProperty): - """ - `EncryptionConfiguration `__ - """ - - props: PropsDictType = { - "KmsKeyArn": (str, False), - "SseType": (str, False), - } - - class VectorBucket(AWSObject): """ `VectorBucket `__ diff --git a/troposphere/sagemaker.py b/troposphere/sagemaker.py index 25e2291d0..1e47c14fd 100644 --- a/troposphere/sagemaker.py +++ b/troposphere/sagemaker.py @@ -334,6 +334,7 @@ class ClusterInstanceGroup(AWSProperty): "InstanceType": (str, True), "KubernetesConfig": (ClusterKubernetesConfig, False), "LifeCycleConfig": (ClusterLifeCycleConfig, True), + "MinInstanceCount": (integer, False), "OnStartDeepHealthChecks": ([str], False), "OverrideVpcConfig": (VpcConfig, False), "ScheduledUpdateConfig": (ScheduledUpdateConfig, False), diff --git a/troposphere/ses.py b/troposphere/ses.py index 17b9f8df8..926aad074 100644 --- a/troposphere/ses.py +++ b/troposphere/ses.py @@ -1185,6 +1185,30 @@ class Template(AWSObject): } +class ResourceAssociation(AWSProperty): + """ + `ResourceAssociation `__ + """ + + props: PropsDictType = { + "ResourceArn": (str, True), + } + + +class Tenant(AWSObject): + """ + `Tenant `__ + """ + + resource_type = "AWS::SES::Tenant" + + props: PropsDictType = { + "ResourceAssociations": ([ResourceAssociation], False), + "Tags": (Tags, False), + "TenantName": (str, True), + } + + class DashboardAttributes(AWSProperty): """ `DashboardAttributes `__ diff --git a/troposphere/workspacesweb.py b/troposphere/workspacesweb.py index f329ea230..592ab50f9 100644 --- a/troposphere/workspacesweb.py +++ b/troposphere/workspacesweb.py @@ -270,6 +270,53 @@ class UserAccessLoggingSettings(AWSObject): } +class ImageMetadata(AWSProperty): + """ + `ImageMetadata `__ + """ + + props: PropsDictType = { + "FileExtension": (str, True), + "LastUploadTimestamp": (str, True), + "MimeType": (str, True), + } + + +class LocalizedBrandingStrings(AWSProperty): + """ + `LocalizedBrandingStrings `__ + """ + + props: PropsDictType = { + "BrowserTabTitle": (str, True), + "ContactButtonText": (str, False), + "ContactLink": (str, False), + "LoadingText": (str, False), + "LoginButtonText": (str, False), + "LoginDescription": (str, False), + "LoginTitle": (str, False), + "WelcomeText": (str, True), + } + + +class BrandingConfiguration(AWSProperty): + """ + `BrandingConfiguration `__ + """ + + props: PropsDictType = { + "ColorTheme": (str, False), + "Favicon": (str, False), + "FaviconMetadata": (ImageMetadata, False), + "LocalizedStrings": (dict, False), + "Logo": (str, False), + "LogoMetadata": (ImageMetadata, False), + "TermsOfService": (str, False), + "Wallpaper": (str, False), + "WallpaperMetadata": (ImageMetadata, False), + } + + class CookieSpecification(AWSProperty): """ `CookieSpecification `__ @@ -315,6 +362,7 @@ class UserSettings(AWSObject): props: PropsDictType = { "AdditionalEncryptionContext": (dict, False), + "BrandingConfiguration": (BrandingConfiguration, False), "CookieSynchronizationConfiguration": ( CookieSynchronizationConfiguration, False, @@ -330,4 +378,5 @@ class UserSettings(AWSObject): "Tags": (Tags, False), "ToolbarConfiguration": (ToolbarConfiguration, False), "UploadAllowed": (str, True), + "WebAuthnAllowed": (str, False), }