From fef5db60b932afb59d1b2ce401c4be21ed967428 Mon Sep 17 00:00:00 2001 From: markpeek <638982+markpeek@users.noreply.github.com> Date: Fri, 31 Jul 2026 15:11:33 +0000 Subject: [PATCH] Updates from spec version 259.0.0 --- troposphere/amazonmq.py | 1 + troposphere/appstream.py | 27 ++ troposphere/auditmanager.py | 37 +++ troposphere/awslambda.py | 2 + troposphere/backup.py | 49 +++ troposphere/bedrock.py | 15 +- troposphere/bedrockagentcore.py | 215 +++++++++---- troposphere/certificatemanager.py | 125 +++++++- troposphere/cleanrooms.py | 89 +++++- troposphere/cloudformation.py | 52 ++-- troposphere/cloudfront.py | 1 + troposphere/cloudwatch.py | 27 +- troposphere/codebuild.py | 13 +- troposphere/cognito.py | 86 +++++- troposphere/config.py | 67 ++-- troposphere/connect.py | 233 ++++++++++++-- troposphere/customerprofiles.py | 30 ++ troposphere/devopsagent.py | 30 +- troposphere/dynamodb.py | 26 +- troposphere/ec2.py | 119 +++++++- troposphere/ecs.py | 18 +- troposphere/eks.py | 11 + troposphere/elasticloadbalancingv2.py | 3 + troposphere/emrcontainers.py | 2 + troposphere/entityresolution.py | 1 + troposphere/evs.py | 8 +- troposphere/globalaccelerator.py | 3 + troposphere/glue.py | 67 ++++ troposphere/grafana.py | 12 + troposphere/healthlake.py | 60 ++++ troposphere/imagebuilder.py | 3 + troposphere/mediaconnect.py | 59 ++++ troposphere/msk.py | 240 +++++++++++++++ troposphere/opensearchserverless.py | 28 ++ troposphere/opensearchservice.py | 2 + troposphere/pcs.py | 49 +++ troposphere/personalize.py | 15 - troposphere/quicksight.py | 287 +++++++++++++++++ troposphere/route53resolver.py | 12 + troposphere/sagemaker.py | 423 ++++++++++++++++++-------- troposphere/securityhub.py | 50 +++ troposphere/servicecatalog.py | 15 +- troposphere/smsvoice.py | 13 + troposphere/ssm.py | 18 ++ troposphere/vpclattice.py | 1 + troposphere/workspaces.py | 26 ++ 46 files changed, 2308 insertions(+), 362 deletions(-) diff --git a/troposphere/amazonmq.py b/troposphere/amazonmq.py index d181c5e2d..d69a23467 100644 --- a/troposphere/amazonmq.py +++ b/troposphere/amazonmq.py @@ -115,6 +115,7 @@ class Broker(AWSObject): "PubliclyAccessible": (boolean, True), "ResourceShareArns": ([str], False), "SecurityGroups": ([str], False), + "StorageSize": (integer, False), "StorageType": (str, False), "SubnetIds": ([str], False), "Tags": (validate_tags_or_list, False), diff --git a/troposphere/appstream.py b/troposphere/appstream.py index 13a754c95..d8bc9707f 100644 --- a/troposphere/appstream.py +++ b/troposphere/appstream.py @@ -306,6 +306,32 @@ class ImageBuilder(AWSObject): } +class AgentAccessSetting(AWSProperty): + """ + `AgentAccessSetting `__ + """ + + props: PropsDictType = { + "AgentAction": (str, True), + "Permission": (str, True), + } + + +class AgentAccessConfig(AWSProperty): + """ + `AgentAccessConfig `__ + """ + + props: PropsDictType = { + "S3BucketArn": (str, False), + "ScreenImageFormat": (str, True), + "ScreenResolution": (str, True), + "ScreenshotsUploadEnabled": (boolean, False), + "Settings": ([AgentAccessSetting], True), + "UserControlMode": (str, False), + } + + class ApplicationSettings(AWSProperty): """ `ApplicationSettings `__ @@ -382,6 +408,7 @@ class Stack(AWSObject): props: PropsDictType = { "AccessEndpoints": ([AccessEndpoint], False), + "AgentAccessConfig": (AgentAccessConfig, False), "ApplicationSettings": (ApplicationSettings, False), "AttributesToDelete": ([str], False), "ContentRedirection": (ContentRedirection, False), diff --git a/troposphere/auditmanager.py b/troposphere/auditmanager.py index e8f7317a0..1f859d903 100644 --- a/troposphere/auditmanager.py +++ b/troposphere/auditmanager.py @@ -104,3 +104,40 @@ class Assessment(AWSObject): "Status": (str, False), "Tags": (Tags, False), } + + +class ControlSetControl(AWSProperty): + """ + `ControlSetControl `__ + """ + + props: PropsDictType = { + "Id": (str, True), + } + + +class ControlSet(AWSProperty): + """ + `ControlSet `__ + """ + + props: PropsDictType = { + "Controls": ([ControlSetControl], True), + "Name": (str, True), + } + + +class AssessmentFramework(AWSObject): + """ + `AssessmentFramework `__ + """ + + resource_type = "AWS::AuditManager::AssessmentFramework" + + props: PropsDictType = { + "ComplianceType": (str, False), + "ControlSets": ([ControlSet], True), + "Description": (str, False), + "Name": (str, True), + "Tags": (Tags, False), + } diff --git a/troposphere/awslambda.py b/troposphere/awslambda.py index 0f74a5187..546e0e047 100644 --- a/troposphere/awslambda.py +++ b/troposphere/awslambda.py @@ -497,6 +497,7 @@ class Code(AWSProperty): "ImageUri": (str, False), "S3Bucket": (str, False), "S3Key": (str, False), + "S3ObjectStorageMode": (str, False), "S3ObjectVersion": (str, False), "SourceKMSKeyArn": (str, False), "ZipFile": (str, False), @@ -523,6 +524,7 @@ class DurableConfig(AWSProperty): props: PropsDictType = { "ExecutionTimeout": (integer, True), + "KMSKeyArn": (str, False), "RetentionPeriodInDays": (integer, False), } diff --git a/troposphere/backup.py b/troposphere/backup.py index bae97fa2f..902c16cf3 100644 --- a/troposphere/backup.py +++ b/troposphere/backup.py @@ -287,6 +287,55 @@ class Framework(AWSObject): } +class DateRange(AWSProperty): + """ + `DateRange `__ + """ + + props: PropsDictType = { + "FromDate": (str, True), + "ToDate": (str, True), + } + + +class RecoveryPointSelection(AWSProperty): + """ + `RecoveryPointSelection `__ + """ + + props: PropsDictType = { + "DateRange": (DateRange, False), + "ResourceIdentifiers": ([str], False), + "VaultNames": ([str], False), + } + + +class TagsItems(AWSProperty): + """ + `TagsItems `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (str, True), + } + + +class LegalHold(AWSObject): + """ + `LegalHold `__ + """ + + resource_type = "AWS::Backup::LegalHold" + + props: PropsDictType = { + "Description": (str, True), + "RecoveryPointSelection": (RecoveryPointSelection, True), + "Tags": ([TagsItems], False), + "Title": (str, True), + } + + class LogicallyAirGappedBackupVault(AWSObject): """ `LogicallyAirGappedBackupVault `__ diff --git a/troposphere/bedrock.py b/troposphere/bedrock.py index cac634ce7..8c48794b8 100644 --- a/troposphere/bedrock.py +++ b/troposphere/bedrock.py @@ -2557,7 +2557,7 @@ class ManagedKnowledgeBaseConfiguration(AWSProperty): """ props: PropsDictType = { - "EmbeddingModelArn": (str, True), + "EmbeddingModelArn": (str, False), "EmbeddingModelConfiguration": (EmbeddingModelConfiguration, False), "EmbeddingModelType": (str, False), "ServerSideEncryptionConfiguration": ( @@ -3004,6 +3004,19 @@ class KnowledgeBase(AWSObject): } +class KnowledgeBasePolicy(AWSObject): + """ + `KnowledgeBasePolicy `__ + """ + + resource_type = "AWS::Bedrock::KnowledgeBasePolicy" + + props: PropsDictType = { + "KnowledgeBaseId": (str, True), + "PolicyDocument": (dict, True), + } + + class PromptAgentResource(AWSProperty): """ `PromptAgentResource `__ diff --git a/troposphere/bedrockagentcore.py b/troposphere/bedrockagentcore.py index f16064e03..fff263b83 100644 --- a/troposphere/bedrockagentcore.py +++ b/troposphere/bedrockagentcore.py @@ -37,16 +37,6 @@ class ApiKeyCredentialProvider(AWSObject): } -class Browser(AWSObject): - """ - `Browser `__ - """ - - resource_type = "AWS::BedrockAgentCore::Browser" - - props: PropsDictType = {} - - class S3Location(AWSProperty): """ `S3Location `__ @@ -412,6 +402,27 @@ class Evaluator(AWSObject): } +class HostingEnvironment(AWSProperty): + """ + `HostingEnvironment `__ + """ + + props: PropsDictType = { + "Arn": (str, True), + } + + +class AllowedWorkloadConfiguration(AWSProperty): + """ + `AllowedWorkloadConfiguration `__ + """ + + props: PropsDictType = { + "HostingEnvironments": ([HostingEnvironment], False), + "WorkloadIdentities": ([str], False), + } + + class ClaimMatchValueType(AWSProperty): """ `ClaimMatchValueType `__ @@ -446,6 +457,53 @@ class CustomClaimValidationType(AWSProperty): } +class ManagedVpcResource(AWSProperty): + """ + `ManagedVpcResource `__ + """ + + props: PropsDictType = { + "EndpointIpAddressType": (str, True), + "RoutingDomain": (str, False), + "SecurityGroupIds": ([str], False), + "SubnetIds": ([str], True), + "Tags": (dict, False), + "VpcIdentifier": (str, True), + } + + +class SelfManagedLatticeResource(AWSProperty): + """ + `SelfManagedLatticeResource `__ + """ + + props: PropsDictType = { + "ResourceConfigurationIdentifier": (str, True), + } + + +class PrivateEndpoint(AWSProperty): + """ + `PrivateEndpoint `__ + """ + + props: PropsDictType = { + "ManagedVpcResource": (ManagedVpcResource, False), + "SelfManagedLatticeResource": (SelfManagedLatticeResource, False), + } + + +class PrivateEndpointOverride(AWSProperty): + """ + `PrivateEndpointOverride `__ + """ + + props: PropsDictType = { + "Domain": (str, True), + "PrivateEndpoint": (PrivateEndpoint, True), + } + + class CustomJWTAuthorizerConfiguration(AWSProperty): """ `CustomJWTAuthorizerConfiguration `__ @@ -455,8 +513,11 @@ class CustomJWTAuthorizerConfiguration(AWSProperty): "AllowedAudience": ([str], False), "AllowedClients": ([str], False), "AllowedScopes": ([str], False), + "AllowedWorkloadConfiguration": (AllowedWorkloadConfiguration, False), "CustomClaims": ([CustomClaimValidationType], False), "DiscoveryUrl": (str, True), + "PrivateEndpoint": (PrivateEndpoint, False), + "PrivateEndpointOverrides": ([PrivateEndpointOverride], False), } @@ -663,42 +724,6 @@ class MetadataConfiguration(AWSProperty): } -class ManagedVpcResource(AWSProperty): - """ - `ManagedVpcResource `__ - """ - - props: PropsDictType = { - "EndpointIpAddressType": (str, True), - "RoutingDomain": (str, False), - "SecurityGroupIds": ([str], False), - "SubnetIds": ([str], True), - "Tags": (dict, False), - "VpcIdentifier": (str, True), - } - - -class SelfManagedLatticeResource(AWSProperty): - """ - `SelfManagedLatticeResource `__ - """ - - props: PropsDictType = { - "ResourceConfigurationIdentifier": (str, True), - } - - -class PrivateEndpoint(AWSProperty): - """ - `PrivateEndpoint `__ - """ - - props: PropsDictType = { - "ManagedVpcResource": (ManagedVpcResource, False), - "SelfManagedLatticeResource": (SelfManagedLatticeResource, False), - } - - class S3Configuration(AWSProperty): """ `S3Configuration `__ @@ -778,6 +803,92 @@ class HttpTargetConfiguration(AWSProperty): } +class InferenceConnectorSource(AWSProperty): + """ + `InferenceConnectorSource `__ + """ + + props: PropsDictType = { + "ConnectorId": (str, True), + } + + +class InferenceConnectorTargetConfiguration(AWSProperty): + """ + `InferenceConnectorTargetConfiguration `__ + """ + + props: PropsDictType = { + "Source": (InferenceConnectorSource, True), + } + + +class ModelEntry(AWSProperty): + """ + `ModelEntry `__ + """ + + props: PropsDictType = { + "Model": (str, True), + } + + +class InferenceOperationConfiguration(AWSProperty): + """ + `InferenceOperationConfiguration `__ + """ + + props: PropsDictType = { + "Models": ([ModelEntry], False), + "Path": (str, True), + "ProviderPath": (str, False), + } + + +class ProviderPrefix(AWSProperty): + """ + `ProviderPrefix `__ + """ + + props: PropsDictType = { + "Separator": (str, False), + "Strip": (boolean, False), + } + + +class ModelMapping(AWSProperty): + """ + `ModelMapping `__ + """ + + props: PropsDictType = { + "ProviderPrefix": (ProviderPrefix, False), + } + + +class InferenceProviderTargetConfiguration(AWSProperty): + """ + `InferenceProviderTargetConfiguration `__ + """ + + props: PropsDictType = { + "Endpoint": (str, True), + "ModelMapping": (ModelMapping, False), + "Operations": ([InferenceOperationConfiguration], False), + } + + +class InferenceTargetConfiguration(AWSProperty): + """ + `InferenceTargetConfiguration `__ + """ + + props: PropsDictType = { + "Connector": (InferenceConnectorTargetConfiguration, False), + "Provider": (InferenceProviderTargetConfiguration, False), + } + + class ApiGatewayToolFilter(AWSProperty): """ `ApiGatewayToolFilter `__ @@ -967,6 +1078,7 @@ class TargetConfiguration(AWSProperty): props: PropsDictType = { "Http": (HttpTargetConfiguration, False), + "Inference": (InferenceTargetConfiguration, False), "Mcp": (McpTargetConfiguration, False), } @@ -2708,17 +2820,6 @@ class PaymentProviderConfigurationOutput(AWSProperty): } -class PrivateEndpointOverride(AWSProperty): - """ - `PrivateEndpointOverride `__ - """ - - props: PropsDictType = { - "Domain": (str, True), - "PrivateEndpoint": (PrivateEndpoint, True), - } - - class VersionLineageMetadata(AWSProperty): """ `VersionLineageMetadata `__ diff --git a/troposphere/certificatemanager.py b/troposphere/certificatemanager.py index 3dece25e2..9fc456292 100644 --- a/troposphere/certificatemanager.py +++ b/troposphere/certificatemanager.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 integer from .validators.certificatemanager import validate_tags_or_list @@ -33,13 +33,134 @@ class Account(AWSObject): } +class DomainScope(AWSProperty): + """ + `DomainScope `__ + """ + + props: PropsDictType = { + "ExactDomain": (str, False), + "Subdomains": (str, False), + "Wildcards": (str, False), + } + + +class DnsPrevalidationOptions(AWSProperty): + """ + `DnsPrevalidationOptions `__ + """ + + props: PropsDictType = { + "DomainScope": (DomainScope, False), + "HostedZoneId": (str, False), + } + + +class PrevalidationOptions(AWSProperty): + """ + `PrevalidationOptions `__ + """ + + props: PropsDictType = { + "DnsPrevalidation": (DnsPrevalidationOptions, True), + } + + +class TagsItems(AWSProperty): + """ + `TagsItems `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (str, True), + } + + +class AcmeDomainValidation(AWSObject): + """ + `AcmeDomainValidation `__ + """ + + resource_type = "AWS::CertificateManager::AcmeDomainValidation" + + props: PropsDictType = { + "AcmeEndpointArn": (str, True), + "DomainName": (str, True), + "PrevalidationOptions": (PrevalidationOptions, True), + "Tags": ([TagsItems], False), + } + + +class PublicCertificateAuthority(AWSProperty): + """ + `PublicCertificateAuthority `__ + """ + + props: PropsDictType = { + "AllowedKeyAlgorithms": ([str], False), + } + + +class CertificateAuthority(AWSProperty): + """ + `CertificateAuthority `__ + """ + + props: PropsDictType = { + "PublicCertificateAuthority": (PublicCertificateAuthority, True), + } + + +class AcmeEndpoint(AWSObject): + """ + `AcmeEndpoint `__ + """ + + resource_type = "AWS::CertificateManager::AcmeEndpoint" + + props: PropsDictType = { + "AuthorizationBehavior": (str, True), + "CertificateAuthority": (CertificateAuthority, True), + "CertificateTags": (Tags, False), + "Contact": (str, False), + "Tags": ([TagsItems], False), + } + + +class Expiration(AWSProperty): + """ + `Expiration `__ + """ + + props: PropsDictType = { + "Type": (str, True), + "Value": (integer, True), + } + + +class AcmeExternalAccountBinding(AWSObject): + """ + `AcmeExternalAccountBinding `__ + """ + + resource_type = "AWS::CertificateManager::AcmeExternalAccountBinding" + + props: PropsDictType = { + "AcmeEndpointArn": (str, True), + "Expiration": (Expiration, False), + "RoleArn": (str, True), + "Tags": ([TagsItems], False), + } + + class DomainValidationOption(AWSProperty): """ `DomainValidationOption `__ """ props: PropsDictType = { - "DomainName": (str, True), + "DomainName": (str, False), "HostedZoneId": (str, False), "ValidationDomain": (str, False), } diff --git a/troposphere/cleanrooms.py b/troposphere/cleanrooms.py index e3146a6e2..d733b258a 100644 --- a/troposphere/cleanrooms.py +++ b/troposphere/cleanrooms.py @@ -362,7 +362,7 @@ class AnalysisRuleAggregation(AWSProperty): class DifferentialPrivacyColumn(AWSProperty): """ - `DifferentialPrivacyColumn `__ + `DifferentialPrivacyColumn `__ """ props: PropsDictType = { @@ -372,7 +372,7 @@ class DifferentialPrivacyColumn(AWSProperty): class DifferentialPrivacy(AWSProperty): """ - `DifferentialPrivacy `__ + `DifferentialPrivacy `__ """ props: PropsDictType = { @@ -687,6 +687,91 @@ class IdNamespaceAssociation(AWSObject): } +class IntermediateTableAnalysisRuleCustom(AWSProperty): + """ + `IntermediateTableAnalysisRuleCustom `__ + """ + + props: PropsDictType = { + "AdditionalAnalyses": (str, False), + "AllowedAnalyses": ([str], True), + "AllowedAnalysisProviders": ([str], False), + "AllowedResultReceivers": ([str], False), + "DifferentialPrivacy": (DifferentialPrivacy, False), + "DisallowedOutputColumns": ([str], False), + } + + +class IntermediateTableAnalysisRulePolicyV1(AWSProperty): + """ + `IntermediateTableAnalysisRulePolicyV1 `__ + """ + + props: PropsDictType = { + "Custom": (IntermediateTableAnalysisRuleCustom, True), + } + + +class IntermediateTableAnalysisRulePolicy(AWSProperty): + """ + `IntermediateTableAnalysisRulePolicy `__ + """ + + props: PropsDictType = { + "V1": (IntermediateTableAnalysisRulePolicyV1, True), + } + + +class IntermediateTableAnalysisRule(AWSProperty): + """ + `IntermediateTableAnalysisRule `__ + """ + + props: PropsDictType = { + "Policy": (IntermediateTableAnalysisRulePolicy, True), + "Type": (str, True), + } + + +class PopulationAnalysisSqlParameters(AWSProperty): + """ + `PopulationAnalysisSqlParameters `__ + """ + + props: PropsDictType = { + "AnalysisTemplateArn": (str, False), + "QueryString": (str, False), + } + + +class PopulationAnalysisConfiguration(AWSProperty): + """ + `PopulationAnalysisConfiguration `__ + """ + + props: PropsDictType = { + "SqlParameters": (PopulationAnalysisSqlParameters, False), + } + + +class IntermediateTable(AWSObject): + """ + `IntermediateTable `__ + """ + + resource_type = "AWS::CleanRooms::IntermediateTable" + + props: PropsDictType = { + "AnalysisRules": ([IntermediateTableAnalysisRule], False), + "Description": (str, False), + "KmsKeyArn": (str, False), + "MembershipIdentifier": (str, True), + "Name": (str, True), + "PopulationAnalysisConfiguration": (PopulationAnalysisConfiguration, True), + "Tags": (Tags, False), + } + + class MembershipJobComputePaymentConfig(AWSProperty): """ `MembershipJobComputePaymentConfig `__ diff --git a/troposphere/cloudformation.py b/troposphere/cloudformation.py index dcf59ed08..f0e32a8c1 100644 --- a/troposphere/cloudformation.py +++ b/troposphere/cloudformation.py @@ -36,6 +36,30 @@ class CustomResource(AWSObject): } +class TemplateConfiguration(AWSProperty): + """ + `TemplateConfiguration `__ + """ + + props: PropsDictType = { + "DeletionPolicy": (str, False), + "UpdateReplacePolicy": (str, False), + } + + +class GeneratedTemplate(AWSObject): + """ + `GeneratedTemplate `__ + """ + + resource_type = "AWS::CloudFormation::GeneratedTemplate" + + props: PropsDictType = { + "GeneratedTemplateName": (str, True), + "TemplateConfiguration": (TemplateConfiguration, False), + } + + class S3Location(AWSProperty): """ `S3Location `__ @@ -201,10 +225,12 @@ class LambdaHook(AWSObject): props: PropsDictType = { "Alias": (str, True), + "AutoUpdate": (boolean, False), "ExecutionRole": (str, True), "FailureMode": (str, True), "HookStatus": (str, True), "LambdaFunction": (str, True), + "LoggingConfig": (LoggingConfig, False), "StackFilters": (StackFilters, False), "TargetFilters": (TargetFilters, False), "TargetOperations": ([str], True), @@ -314,26 +340,16 @@ class ResourceVersion(AWSObject): class Stack(AWSObject): """ - `Stack `__ + `Stack `__ """ resource_type = "AWS::CloudFormation::Stack" props: PropsDictType = { - "Capabilities": ([str], False), - "Description": (str, False), - "DisableRollback": (boolean, False), - "EnableTerminationProtection": (boolean, False), "NotificationARNs": ([str], False), "Parameters": (dict, False), - "RoleARN": (str, False), - "StackName": (str, True), - "StackPolicyBody": (dict, False), - "StackPolicyURL": (str, False), - "StackStatusReason": (str, False), "Tags": (Tags, False), - "TemplateBody": (dict, False), - "TemplateURL": (str, False), + "TemplateURL": (str, True), "TimeoutInMinutes": (integer, False), } @@ -486,14 +502,14 @@ class WaitConditionHandle(AWSObject): props: PropsDictType = {} -class Output(AWSProperty): +class TemplateProgress(AWSProperty): """ - `Output `__ + `TemplateProgress `__ """ props: PropsDictType = { - "Description": (str, False), - "ExportName": (str, False), - "OutputKey": (str, False), - "OutputValue": (str, False), + "ResourcesFailed": (integer, False), + "ResourcesPending": (integer, False), + "ResourcesProcessing": (integer, False), + "ResourcesSucceeded": (integer, False), } diff --git a/troposphere/cloudfront.py b/troposphere/cloudfront.py index f096a3a15..c3690a992 100644 --- a/troposphere/cloudfront.py +++ b/troposphere/cloudfront.py @@ -1489,6 +1489,7 @@ class VpcOriginEndpointConfig(AWSProperty): "Arn": (str, True), "HTTPPort": (integer, False), "HTTPSPort": (integer, False), + "IpAddressType": (str, False), "Name": (str, True), "OriginProtocolPolicy": (str, False), "OriginSSLProtocols": ([str], False), diff --git a/troposphere/cloudwatch.py b/troposphere/cloudwatch.py index 685b400ab..1439fa453 100644 --- a/troposphere/cloudwatch.py +++ b/troposphere/cloudwatch.py @@ -39,6 +39,27 @@ class EvaluationCriteria(AWSProperty): } +class WallClockWindow(AWSProperty): + """ + `WallClockWindow `__ + """ + + props: PropsDictType = { + "Timezone": (str, False), + } + + +class EvaluationWindow(AWSProperty): + """ + `EvaluationWindow `__ + """ + + props: PropsDictType = { + "SlidingWindow": (dict, False), + "WallClockWindow": (WallClockWindow, False), + } + + class MetricDimension(AWSProperty): """ `MetricDimension `__ @@ -110,6 +131,7 @@ class Alarm(AWSObject): "EvaluationCriteria": (EvaluationCriteria, False), "EvaluationInterval": (integer, False), "EvaluationPeriods": (integer, False), + "EvaluationWindow": (EvaluationWindow, False), "ExtendedStatistic": (str, False), "InsufficientDataActions": ([str], False), "MetricName": (str, False), @@ -317,7 +339,7 @@ class ScheduleConfiguration(AWSProperty): props: PropsDictType = { "EndTimeOffset": (integer, False), "ScheduleExpression": (str, True), - "StartTimeOffset": (integer, False), + "StartTimeOffset": (integer, True), } @@ -328,10 +350,11 @@ class ScheduledQueryConfiguration(AWSProperty): props: PropsDictType = { "AggregationExpression": (str, True), - "LogGroupIdentifiers": ([str], True), + "LogGroupIdentifiers": ([str], False), "QueryString": (str, True), "ScheduleConfiguration": (ScheduleConfiguration, True), "ScheduledQueryRoleARN": (str, True), + "Tags": (Tags, False), } diff --git a/troposphere/codebuild.py b/troposphere/codebuild.py index 23ba974e3..dc92dead2 100644 --- a/troposphere/codebuild.py +++ b/troposphere/codebuild.py @@ -25,18 +25,6 @@ ) -class Build(AWSObject): - """ - `Build `__ - """ - - resource_type = "AWS::CodeBuild::Build" - - props: PropsDictType = { - "ProjectName": (str, False), - } - - class ComputeConfiguration(AWSProperty): """ `ComputeConfiguration `__ @@ -211,6 +199,7 @@ class Environment(AWSProperty): "DockerServer": (DockerServer, False), "EnvironmentVariables": (validate_environmentvariable_or_list, False), "Fleet": (ProjectFleet, False), + "HostKernel": (str, False), "Image": (str, True), "ImagePullCredentialsType": (validate_image_pull_credentials, False), "PrivilegedMode": (boolean, False), diff --git a/troposphere/cognito.py b/troposphere/cognito.py index f962c7de1..f7ec76a04 100644 --- a/troposphere/cognito.py +++ b/troposphere/cognito.py @@ -297,7 +297,7 @@ class DeviceConfiguration(AWSProperty): class EmailConfiguration(AWSProperty): """ - `EmailConfiguration `__ + `EmailConfiguration `__ """ props: PropsDictType = { @@ -309,9 +309,30 @@ class EmailConfiguration(AWSProperty): } +class IssuerConfiguration(AWSProperty): + """ + `IssuerConfiguration `__ + """ + + props: PropsDictType = { + "Type": (str, False), + } + + +class KeyConfiguration(AWSProperty): + """ + `KeyConfiguration `__ + """ + + props: PropsDictType = { + "KeyType": (str, False), + "KmsKeyArn": (str, False), + } + + class CustomEmailSender(AWSProperty): """ - `CustomEmailSender `__ + `CustomEmailSender `__ """ props: PropsDictType = { @@ -322,7 +343,7 @@ class CustomEmailSender(AWSProperty): class CustomSMSSender(AWSProperty): """ - `CustomSMSSender `__ + `CustomSMSSender `__ """ props: PropsDictType = { @@ -333,7 +354,7 @@ class CustomSMSSender(AWSProperty): class InboundFederation(AWSProperty): """ - `InboundFederation `__ + `InboundFederation `__ """ props: PropsDictType = { @@ -344,7 +365,7 @@ class InboundFederation(AWSProperty): class PreTokenGenerationConfig(AWSProperty): """ - `PreTokenGenerationConfig `__ + `PreTokenGenerationConfig `__ """ props: PropsDictType = { @@ -355,7 +376,7 @@ class PreTokenGenerationConfig(AWSProperty): class LambdaConfig(AWSProperty): """ - `LambdaConfig `__ + `LambdaConfig `__ """ props: PropsDictType = { @@ -452,12 +473,29 @@ class SchemaAttribute(AWSProperty): } +class EumsSmsConfiguration(AWSProperty): + """ + `EumsSmsConfiguration `__ + """ + + props: PropsDictType = { + "CallerArn": (str, True), + "ConfigurationSetName": (str, False), + "ExternalId": (str, False), + "InEntityId": (str, False), + "InTemplateId": (str, False), + "OriginationIdentity": (str, False), + "Region": (str, False), + } + + class SmsConfiguration(AWSProperty): """ - `SmsConfiguration `__ + `SmsConfiguration `__ """ props: PropsDictType = { + "EumsSms": (EumsSmsConfiguration, False), "ExternalId": (str, False), "SnsCallerArn": (str, False), "SnsRegion": (str, False), @@ -540,6 +578,8 @@ class UserPool(AWSObject): "EmailVerificationMessage": (str, False), "EmailVerificationSubject": (str, False), "EnabledMfas": ([str], False), + "IssuerConfiguration": (IssuerConfiguration, False), + "KeyConfiguration": (KeyConfiguration, False), "LambdaConfig": (LambdaConfig, False), "MfaConfiguration": (str, False), "Policies": (Policies, False), @@ -639,6 +679,7 @@ class CustomDomainConfigType(AWSProperty): props: PropsDictType = { "CertificateArn": (str, False), + "SecurityPolicy": (str, False), } @@ -712,6 +753,37 @@ class UserPoolIdentityProvider(AWSObject): } +class UserPoolRegionalConfigurationAttachment(AWSObject): + """ + `UserPoolRegionalConfigurationAttachment `__ + """ + + resource_type = "AWS::Cognito::UserPoolRegionalConfigurationAttachment" + + props: PropsDictType = { + "EmailConfiguration": (EmailConfiguration, False), + "LambdaConfig": (LambdaConfig, False), + "SmsConfiguration": (SmsConfiguration, False), + "Status": (str, False), + "UserPoolId": (str, True), + "UserPoolTags": (dict, False), + } + + +class UserPoolReplica(AWSObject): + """ + `UserPoolReplica `__ + """ + + resource_type = "AWS::Cognito::UserPoolReplica" + + props: PropsDictType = { + "RegionName": (str, True), + "UserPoolId": (str, True), + "UserPoolTagsAtCreate": (dict, False), + } + + class ResourceServerScopeType(AWSProperty): """ `ResourceServerScopeType `__ diff --git a/troposphere/config.py b/troposphere/config.py index 884815324..3b01a022e 100644 --- a/troposphere/config.py +++ b/troposphere/config.py @@ -267,12 +267,47 @@ class ConformancePack(AWSObject): "ConformancePackName": (str, True), "DeliveryS3Bucket": (str, False), "DeliveryS3KeyPrefix": (str, False), + "Tags": (Tags, False), "TemplateBody": (str, False), "TemplateS3Uri": (str, False), "TemplateSSMDocumentDetails": (TemplateSSMDocumentDetails, False), } +class AzureConnectorConfiguration(AWSProperty): + """ + `AzureConnectorConfiguration `__ + """ + + props: PropsDictType = { + "ClientIdentifier": (str, True), + "TenantIdentifier": (str, True), + } + + +class ConnectorConfiguration(AWSProperty): + """ + `ConnectorConfiguration `__ + """ + + props: PropsDictType = { + "Azure": (AzureConnectorConfiguration, False), + } + + +class Connector(AWSObject): + """ + `Connector `__ + """ + + resource_type = "AWS::Config::Connector" + + props: PropsDictType = { + "ConnectorConfiguration": (ConnectorConfiguration, True), + "Tags": (Tags, False), + } + + class ConfigSnapshotDeliveryProperties(AWSProperty): """ `ConfigSnapshotDeliveryProperties `__ @@ -387,6 +422,7 @@ class OrganizationConformancePack(AWSObject): "DeliveryS3KeyPrefix": (str, False), "ExcludedAccounts": ([str], False), "OrganizationConformancePackName": (str, True), + "Tags": (Tags, False), "TemplateBody": (str, False), "TemplateS3Uri": (str, False), } @@ -447,34 +483,3 @@ class StoredQuery(AWSObject): "QueryName": (str, True), "Tags": (Tags, False), } - - -class ResourceValue(AWSProperty): - """ - `ResourceValue `__ - """ - - props: PropsDictType = { - "Value": (str, False), - } - - -class StaticValue(AWSProperty): - """ - `StaticValue `__ - """ - - props: PropsDictType = { - "Values": ([str], False), - } - - -class RemediationParameterValue(AWSProperty): - """ - `RemediationParameterValue `__ - """ - - props: PropsDictType = { - "ResourceValue": (ResourceValue, False), - "StaticValue": (StaticValue, False), - } diff --git a/troposphere/connect.py b/troposphere/connect.py index 183c82c88..110bbeb63 100644 --- a/troposphere/connect.py +++ b/troposphere/connect.py @@ -130,6 +130,20 @@ class ContactFlowVersion(AWSObject): } +class DataLakeAssociation(AWSObject): + """ + `DataLakeAssociation `__ + """ + + resource_type = "AWS::Connect::DataLakeAssociation" + + props: PropsDictType = { + "DataSetId": (str, True), + "InstanceId": (str, True), + "TargetAccountId": (str, False), + } + + class DataTable(AWSObject): """ `DataTable `__ @@ -139,12 +153,12 @@ class DataTable(AWSObject): props: PropsDictType = { "Description": (str, False), - "InstanceArn": (str, False), - "Name": (str, False), - "Status": (str, False), + "InstanceArn": (str, True), + "Name": (str, True), + "Status": (str, True), "Tags": (Tags, False), - "TimeZone": (str, False), - "ValueLockLevel": (str, False), + "TimeZone": (str, True), + "ValueLockLevel": (str, True), } @@ -186,13 +200,13 @@ class DataTableAttribute(AWSObject): resource_type = "AWS::Connect::DataTableAttribute" props: PropsDictType = { - "DataTableArn": (str, False), + "DataTableArn": (str, True), "Description": (str, False), - "InstanceArn": (str, False), - "Name": (str, False), + "InstanceArn": (str, True), + "Name": (str, True), "Primary": (boolean, False), "Validation": (Validation, False), - "ValueType": (str, False), + "ValueType": (str, True), } @@ -226,9 +240,9 @@ class DataTableRecord(AWSObject): resource_type = "AWS::Connect::DataTableRecord" props: PropsDictType = { - "DataTableArn": (str, False), - "DataTableRecord": (DataTableRecordProperty, False), - "InstanceArn": (str, False), + "DataTableArn": (str, True), + "DataTableRecord": (DataTableRecordProperty, True), + "InstanceArn": (str, True), } @@ -336,6 +350,42 @@ class EvaluationFormItemEnablementConfiguration(AWSProperty): } +class EvaluationFormScoreThreshold(AWSProperty): + """ + `EvaluationFormScoreThreshold `__ + """ + + props: PropsDictType = { + "MaxScorePercentage": (double, False), + "MinScorePercentage": (double, False), + "PerformanceCategory": (str, True), + } + + +class QuestionPointsConfiguration(AWSProperty): + """ + `QuestionPointsConfiguration `__ + """ + + props: PropsDictType = { + "IsBonus": (boolean, False), + "MaxPointValue": (integer, False), + "MinPointValue": (integer, False), + } + + +class EvaluationFormQuestionScoringConfiguration(AWSProperty): + """ + `EvaluationFormQuestionScoringConfiguration `__ + """ + + props: PropsDictType = { + "IsExcludedFromScoring": (boolean, False), + "PointsConfiguration": (QuestionPointsConfiguration, False), + "ScoreThresholds": ([EvaluationFormScoreThreshold], False), + } + + class MultiSelectQuestionRuleCategoryAutomation(AWSProperty): """ `MultiSelectQuestionRuleCategoryAutomation `__ @@ -380,13 +430,38 @@ class EvaluationFormMultiSelectQuestionAutomation(AWSProperty): } +class AutomaticFailConfiguration(AWSProperty): + """ + `AutomaticFailConfiguration `__ + """ + + props: PropsDictType = { + "TargetSection": (str, False), + } + + +class QuestionOptionPointsConfiguration(AWSProperty): + """ + `QuestionOptionPointsConfiguration `__ + """ + + props: PropsDictType = { + "IsBonus": (boolean, False), + "PointValue": (integer, True), + } + + class EvaluationFormMultiSelectQuestionOption(AWSProperty): """ `EvaluationFormMultiSelectQuestionOption `__ """ props: PropsDictType = { + "AutomaticFail": (boolean, False), + "AutomaticFailConfiguration": (AutomaticFailConfiguration, False), + "PointsConfiguration": (QuestionOptionPointsConfiguration, False), "RefId": (str, True), + "Score": (integer, False), "Text": (str, True), } @@ -424,16 +499,6 @@ class EvaluationFormNumericQuestionAutomation(AWSProperty): } -class AutomaticFailConfiguration(AWSProperty): - """ - `AutomaticFailConfiguration `__ - """ - - props: PropsDictType = { - "TargetSection": (str, False), - } - - class EvaluationFormNumericQuestionOption(AWSProperty): """ `EvaluationFormNumericQuestionOption `__ @@ -444,6 +509,7 @@ class EvaluationFormNumericQuestionOption(AWSProperty): "AutomaticFailConfiguration": (AutomaticFailConfiguration, False), "MaxValue": (integer, True), "MinValue": (integer, True), + "PointsConfiguration": (QuestionOptionPointsConfiguration, False), "Score": (integer, False), } @@ -503,6 +569,7 @@ class EvaluationFormSingleSelectQuestionOption(AWSProperty): props: PropsDictType = { "AutomaticFail": (boolean, False), "AutomaticFailConfiguration": (AutomaticFailConfiguration, False), + "PointsConfiguration": (QuestionOptionPointsConfiguration, False), "RefId": (str, True), "Score": (integer, False), "Text": (str, True), @@ -566,6 +633,7 @@ class EvaluationFormQuestion(AWSProperty): "QuestionType": (str, True), "QuestionTypeProperties": (EvaluationFormQuestionTypeProperties, False), "RefId": (str, True), + "ScoringConfiguration": (EvaluationFormQuestionScoringConfiguration, False), "Title": (str, True), "Weight": (double, False), } @@ -589,8 +657,10 @@ class EvaluationFormSection(AWSProperty): props: PropsDictType = { "Instructions": (str, False), + "IsExcludedFromScoring": (boolean, False), "Items": ([EvaluationFormItem], False), "RefId": (str, True), + "ScoreThresholds": ([EvaluationFormScoreThreshold], False), "Title": (str, True), "Weight": (double, False), } @@ -665,6 +735,7 @@ class ScoringStrategy(AWSProperty): props: PropsDictType = { "Mode": (str, True), + "ScoreThresholds": ([EvaluationFormScoreThreshold], False), "Status": (str, True), } @@ -1097,6 +1168,16 @@ class Queue(AWSObject): } +class FlowQuickConnectConfig(AWSProperty): + """ + `FlowQuickConnectConfig `__ + """ + + props: PropsDictType = { + "ContactFlowArn": (str, True), + } + + class PhoneNumberQuickConnectConfig(AWSProperty): """ `PhoneNumberQuickConnectConfig `__ @@ -1135,6 +1216,7 @@ class QuickConnectConfig(AWSProperty): """ props: PropsDictType = { + "FlowConfig": (FlowQuickConnectConfig, False), "PhoneConfig": (PhoneNumberQuickConnectConfig, False), "QueueConfig": (QueueQuickConnectConfig, False), "QuickConnectType": (str, True), @@ -1236,6 +1318,41 @@ class RoutingProfile(AWSObject): } +class SlaTargetFieldValue(AWSProperty): + """ + `SlaTargetFieldValue `__ + """ + + props: PropsDictType = { + "StringValue": (str, False), + } + + +class CaseSlaConfiguration(AWSProperty): + """ + `CaseSlaConfiguration `__ + """ + + props: PropsDictType = { + "FieldId": (str, False), + "Name": (str, True), + "TargetFieldValues": ([SlaTargetFieldValue], False), + "TargetSlaMinutes": (double, True), + "Type": (str, True), + } + + +class AssignSlaAction(AWSProperty): + """ + `AssignSlaAction `__ + """ + + props: PropsDictType = { + "CaseSlaConfiguration": (CaseSlaConfiguration, True), + "SlaAssignmentType": (str, True), + } + + class FieldIdentifier(AWSProperty): """ `FieldIdentifier `__ @@ -1300,6 +1417,7 @@ class SendNotificationAction(AWSProperty): "Content": (str, True), "ContentType": (str, True), "DeliveryMethod": (str, True), + "Exclusion": (NotificationRecipientType, False), "Recipient": (NotificationRecipientType, True), "Subject": (str, False), } @@ -1356,6 +1474,7 @@ class Actions(AWSProperty): props: PropsDictType = { "AssignContactCategoryActions": (Tags, False), + "AssignSlaActions": ([AssignSlaAction], False), "CreateCaseActions": ([CreateCaseAction], False), "EndAssociatedTasksActions": (Tags, False), "EventBridgeActions": ([EventBridgeAction], False), @@ -1414,8 +1533,8 @@ class Application(AWSProperty): """ props: PropsDictType = { - "ApplicationPermissions": ([str], True), - "Namespace": (str, True), + "ApplicationPermissions": ([str], False), + "Namespace": (str, False), "Type": (str, False), } @@ -1426,8 +1545,8 @@ class FlowModule(AWSProperty): """ props: PropsDictType = { - "FlowModuleId": (str, True), - "Type": (str, True), + "FlowModuleId": (str, False), + "Type": (str, False), } @@ -1437,9 +1556,9 @@ class PrimaryAttributeValue(AWSProperty): """ props: PropsDictType = { - "AccessType": (str, True), - "AttributeName": (str, True), - "Values": ([str], True), + "AccessType": (str, False), + "AttributeName": (str, False), + "Values": ([str], False), } @@ -1449,7 +1568,7 @@ class PrimaryAttributeAccessControlConfigurationItem(AWSProperty): """ props: PropsDictType = { - "PrimaryAttributeValues": ([PrimaryAttributeValue], True), + "PrimaryAttributeValues": ([PrimaryAttributeValue], False), } @@ -1580,6 +1699,59 @@ class TaskTemplate(AWSObject): } +class ChatEntryPointParameters(AWSProperty): + """ + `ChatEntryPointParameters `__ + """ + + props: PropsDictType = { + "FlowId": (str, False), + } + + +class VoiceCallEntryPointParameters(AWSProperty): + """ + `VoiceCallEntryPointParameters `__ + """ + + props: PropsDictType = { + "DestinationPhoneNumber": (str, False), + "FlowId": (str, False), + "SourcePhoneNumber": (str, False), + } + + +class EntryPoint(AWSProperty): + """ + `EntryPoint `__ + """ + + props: PropsDictType = { + "ChatEntryPointParameters": (ChatEntryPointParameters, False), + "Type": (str, False), + "VoiceCallEntryPointParameters": (VoiceCallEntryPointParameters, False), + } + + +class TestCase(AWSObject): + """ + `TestCase `__ + """ + + resource_type = "AWS::Connect::TestCase" + + props: PropsDictType = { + "Content": (str, True), + "Description": (str, False), + "EntryPoint": (EntryPoint, False), + "InitializationData": (str, False), + "InstanceArn": (str, True), + "Name": (str, True), + "Status": (str, False), + "Tags": (Tags, False), + } + + class TrafficDistributionGroup(AWSObject): """ `TrafficDistributionGroup `__ @@ -1601,6 +1773,7 @@ class AfterContactWorkConfig(AWSProperty): """ props: PropsDictType = { + "AfterContactWorkMode": (str, False), "AfterContactWorkTimeLimit": (integer, False), } diff --git a/troposphere/customerprofiles.py b/troposphere/customerprofiles.py index a1fff14fb..f6e50289f 100644 --- a/troposphere/customerprofiles.py +++ b/troposphere/customerprofiles.py @@ -259,6 +259,36 @@ class Domain(AWSObject): } +class DomainObjectTypeField(AWSProperty): + """ + `DomainObjectTypeField `__ + """ + + props: PropsDictType = { + "ContentType": (str, False), + "FeatureType": (str, False), + "Source": (str, True), + "Target": (str, True), + } + + +class DomainObjectType(AWSObject): + """ + `DomainObjectType `__ + """ + + resource_type = "AWS::CustomerProfiles::DomainObjectType" + + props: PropsDictType = { + "Description": (str, False), + "DomainName": (str, True), + "EncryptionKey": (str, False), + "Fields": (dict, True), + "ObjectTypeName": (str, True), + "Tags": (Tags, False), + } + + class EventStream(AWSObject): """ `EventStream `__ diff --git a/troposphere/devopsagent.py b/troposphere/devopsagent.py index 531e8619a..2c1e3e207 100644 --- a/troposphere/devopsagent.py +++ b/troposphere/devopsagent.py @@ -358,6 +358,7 @@ class ServiceManagedMode(AWSProperty): """ props: PropsDictType = { + "DnsResolution": (str, False), "HostAddress": (str, True), "IpAddressType": (str, False), "Ipv4AddressesPerEni": (integer, False), @@ -466,6 +467,18 @@ class ApiKeyDetails(AWSProperty): } +class BearerTokenDetails(AWSProperty): + """ + `BearerTokenDetails `__ + """ + + props: PropsDictType = { + "AuthorizationHeader": (str, False), + "TokenName": (str, True), + "TokenValue": (str, True), + } + + class MCPServerOAuthClientCredentialsConfig(AWSProperty): """ `MCPServerOAuthClientCredentialsConfig `__ @@ -488,6 +501,7 @@ class MCPServerAuthorizationConfig(AWSProperty): props: PropsDictType = { "ApiKey": (ApiKeyDetails, False), + "BearerToken": (BearerTokenDetails, False), "OAuthClientCredentials": (MCPServerOAuthClientCredentialsConfig, False), } @@ -505,18 +519,6 @@ class MCPServerDetails(AWSProperty): } -class BearerTokenDetails(AWSProperty): - """ - `BearerTokenDetails `__ - """ - - props: PropsDictType = { - "AuthorizationHeader": (str, False), - "TokenName": (str, True), - "TokenValue": (str, True), - } - - class MCPServerGrafanaAuthorizationConfig(AWSProperty): """ `MCPServerGrafanaAuthorizationConfig `__ @@ -547,8 +549,9 @@ class MCPServerSigV4AuthorizationConfig(AWSProperty): props: PropsDictType = { "CustomHeaders": (dict, False), + "McpRoleArn": (str, False), "Region": (str, True), - "RoleArn": (str, True), + "RoleArn": (str, False), "Service": (str, True), } @@ -771,6 +774,7 @@ class RegisteredMCPServerSigV4Details(AWSProperty): "CustomHeaders": (dict, False), "Description": (str, False), "Endpoint": (str, True), + "McpRoleArn": (str, False), "Name": (str, True), "Region": (str, True), "RoleArn": (str, True), diff --git a/troposphere/dynamodb.py b/troposphere/dynamodb.py index a1e45b973..7b62cd555 100644 --- a/troposphere/dynamodb.py +++ b/troposphere/dynamodb.py @@ -270,7 +270,7 @@ class ReplicaStreamSpecification(AWSProperty): """ props: PropsDictType = { - "ResourcePolicy": (ResourcePolicy, True), + "ResourcePolicy": (ResourcePolicy, False), } @@ -354,19 +354,6 @@ class GlobalTable(AWSObject): } -class Stream(AWSObject): - """ - `Stream `__ - """ - - resource_type = "AWS::DynamoDB::Stream" - - props: PropsDictType = { - "StreamViewType": (str, False), - "TableName": (str, False), - } - - class OnDemandThroughput(AWSProperty): """ `OnDemandThroughput `__ @@ -495,14 +482,3 @@ class Table(AWSObject): def validate(self): validate_table(self) - - -class KeySchemaItems(AWSProperty): - """ - `KeySchemaItems `__ - """ - - props: PropsDictType = { - "AttributeName": (str, True), - "KeyType": (str, True), - } diff --git a/troposphere/ec2.py b/troposphere/ec2.py index 74bbe6fc5..a17ecb9d4 100644 --- a/troposphere/ec2.py +++ b/troposphere/ec2.py @@ -2313,6 +2313,7 @@ class PlacementGroup(AWSObject): resource_type = "AWS::EC2::PlacementGroup" props: PropsDictType = { + "ParentGroupId": (str, False), "PartitionCount": (integer, False), "SpreadLevel": (validate_placement_spread_level, False), "Strategy": (validate_placement_strategy, False), @@ -3225,6 +3226,61 @@ class TransitGatewayPeeringAttachment(AWSObject): } +class TransitGatewayPolicyTable(AWSObject): + """ + `TransitGatewayPolicyTable `__ + """ + + resource_type = "AWS::EC2::TransitGatewayPolicyTable" + + props: PropsDictType = { + "Tags": (Tags, False), + "TransitGatewayId": (str, True), + } + + +class TransitGatewayPolicyTableAssociation(AWSObject): + """ + `TransitGatewayPolicyTableAssociation `__ + """ + + resource_type = "AWS::EC2::TransitGatewayPolicyTableAssociation" + + props: PropsDictType = { + "TransitGatewayAttachmentId": (str, True), + "TransitGatewayPolicyTableId": (str, True), + } + + +class TransitGatewayPolicyRule(AWSProperty): + """ + `TransitGatewayPolicyRule `__ + """ + + props: PropsDictType = { + "DestinationCidrBlock": (str, False), + "DestinationPortRange": (str, False), + "Protocol": (str, False), + "SourceCidrBlock": (str, False), + "SourcePortRange": (str, False), + } + + +class TransitGatewayPolicyTableEntry(AWSObject): + """ + `TransitGatewayPolicyTableEntry `__ + """ + + resource_type = "AWS::EC2::TransitGatewayPolicyTableEntry" + + props: PropsDictType = { + "PolicyRule": (TransitGatewayPolicyRule, True), + "PolicyRuleNumber": (str, True), + "TargetRouteTableId": (str, True), + "TransitGatewayPolicyTableId": (str, True), + } + + class TransitGatewayRoute(AWSObject): """ `TransitGatewayRoute `__ @@ -3297,6 +3353,57 @@ class TransitGatewayVpcAttachment(AWSObject): } +class VpcEncryptionControlExclusion(AWSProperty): + """ + `VpcEncryptionControlExclusion `__ + """ + + props: PropsDictType = { + "State": (str, False), + "StateMessage": (str, False), + } + + +class VpcEncryptionControlExclusions(AWSProperty): + """ + `VpcEncryptionControlExclusions `__ + """ + + props: PropsDictType = { + "EgressOnlyInternetGateway": (VpcEncryptionControlExclusion, False), + "ElasticFileSystem": (VpcEncryptionControlExclusion, False), + "InternetGateway": (VpcEncryptionControlExclusion, False), + "Lambda": (VpcEncryptionControlExclusion, False), + "NatGateway": (VpcEncryptionControlExclusion, False), + "VirtualPrivateGateway": (VpcEncryptionControlExclusion, False), + "VpcLattice": (VpcEncryptionControlExclusion, False), + "VpcPeering": (VpcEncryptionControlExclusion, False), + } + + +class VpcEncryptionControl(AWSProperty): + """ + `VpcEncryptionControl `__ + """ + + props: PropsDictType = { + "EgressOnlyInternetGatewayExclusion": (str, False), + "ElasticFileSystemExclusion": (str, False), + "InternetGatewayExclusion": (str, False), + "LambdaExclusion": (str, False), + "Mode": (str, False), + "NatGatewayExclusion": (str, False), + "ResourceExclusions": (VpcEncryptionControlExclusions, False), + "State": (str, False), + "StateMessage": (str, False), + "VirtualPrivateGatewayExclusion": (str, False), + "VpcEncryptionControlId": (str, False), + "VpcId": (str, False), + "VpcLatticeExclusion": (str, False), + "VpcPeeringExclusion": (str, False), + } + + class VPC(AWSObject): """ `VPC `__ @@ -3312,6 +3419,7 @@ class VPC(AWSObject): "Ipv4IpamPoolId": (str, False), "Ipv4NetmaskLength": (integer, False), "Tags": (validate_tags_or_list, False), + "VpcEncryptionControl": (VpcEncryptionControl, False), } @@ -4243,14 +4351,3 @@ class VolumeProperty(AWSProperty): "Device": (str, True), "VolumeId": (str, True), } - - -class VpcEncryptionControlExclusion(AWSProperty): - """ - `VpcEncryptionControlExclusion `__ - """ - - props: PropsDictType = { - "State": (str, False), - "StateMessage": (str, False), - } diff --git a/troposphere/ecs.py b/troposphere/ecs.py index cdb03e78c..a0e7b9f2f 100644 --- a/troposphere/ecs.py +++ b/troposphere/ecs.py @@ -891,15 +891,16 @@ class ExpressGatewayService(AWSObject): props: PropsDictType = { "Cluster": (str, False), "Cpu": (str, False), - "ExecutionRoleArn": (str, True), + "ExecutionRoleArn": (str, False), "HealthCheckPath": (str, False), "InfrastructureRoleArn": (str, True), "Memory": (str, False), "NetworkConfiguration": (ExpressGatewayServiceNetworkConfiguration, False), - "PrimaryContainer": (ExpressGatewayContainer, True), + "PrimaryContainer": (ExpressGatewayContainer, False), "ScalingTarget": (ExpressGatewayScalingTarget, False), "ServiceName": (str, False), "Tags": (Tags, False), + "TaskDefinitionArn": (str, False), "TaskRoleArn": (str, False), } @@ -941,6 +942,17 @@ class DeploymentAlarms(AWSProperty): } +class ThresholdConfiguration(AWSProperty): + """ + `ThresholdConfiguration `__ + """ + + props: PropsDictType = { + "Type": (str, True), + "Value": (integer, True), + } + + class DeploymentCircuitBreaker(AWSProperty): """ `DeploymentCircuitBreaker `__ @@ -948,7 +960,9 @@ class DeploymentCircuitBreaker(AWSProperty): props: PropsDictType = { "Enable": (boolean, True), + "ResetOnHealthyTask": (boolean, False), "Rollback": (boolean, True), + "ThresholdConfiguration": (ThresholdConfiguration, False), } diff --git a/troposphere/eks.py b/troposphere/eks.py index 03202ab58..d7debda4a 100644 --- a/troposphere/eks.py +++ b/troposphere/eks.py @@ -376,6 +376,16 @@ class ResourcesVpcConfig(AWSProperty): } +class RollbackConfig(AWSProperty): + """ + `RollbackConfig `__ + """ + + props: PropsDictType = { + "TimeoutMinutes": (integer, False), + } + + class BlockStorage(AWSProperty): """ `BlockStorage `__ @@ -438,6 +448,7 @@ class Cluster(AWSObject): "RemoteNetworkConfig": (RemoteNetworkConfig, False), "ResourcesVpcConfig": (ResourcesVpcConfig, True), "RoleArn": (str, True), + "RollbackConfig": (RollbackConfig, False), "StorageConfig": (StorageConfig, False), "Tags": (Tags, False), "UpgradePolicy": (UpgradePolicy, False), diff --git a/troposphere/elasticloadbalancingv2.py b/troposphere/elasticloadbalancingv2.py index c3ad5e8c8..742959223 100644 --- a/troposphere/elasticloadbalancingv2.py +++ b/troposphere/elasticloadbalancingv2.py @@ -226,6 +226,7 @@ class Listener(AWSObject): "Port": (validate_network_port, False), "Protocol": (str, False), "SslPolicy": (str, False), + "Tags": (Tags, False), } @@ -313,6 +314,7 @@ class SourceIpConfig(AWSProperty): """ props: PropsDictType = { + "IpAddressType": (str, False), "Values": ([str], False), } @@ -419,6 +421,7 @@ class ListenerRule(AWSObject): "Conditions": ([Condition], True), "ListenerArn": (str, False), "Priority": (integer, True), + "Tags": (Tags, False), "Transforms": ([Transform], False), } diff --git a/troposphere/emrcontainers.py b/troposphere/emrcontainers.py index 6aa71be72..116befb59 100644 --- a/troposphere/emrcontainers.py +++ b/troposphere/emrcontainers.py @@ -90,6 +90,7 @@ class Endpoint(AWSObject): "ExecutionRoleArn": (str, True), "Name": (str, False), "ReleaseLabel": (str, True), + "SessionIdleTimeoutInMinutes": (integer, False), "Tags": (Tags, False), "Type": (str, True), "VirtualClusterId": (str, True), @@ -299,6 +300,7 @@ class VirtualCluster(AWSObject): "ContainerProvider": (ContainerProvider, True), "Name": (str, True), "SecurityConfigurationId": (str, False), + "SessionEnabled": (boolean, False), "Tags": (Tags, False), } diff --git a/troposphere/entityresolution.py b/troposphere/entityresolution.py index 49ebc1bba..bd93454f4 100644 --- a/troposphere/entityresolution.py +++ b/troposphere/entityresolution.py @@ -297,6 +297,7 @@ class ResolutionTechniques(AWSProperty): """ props: PropsDictType = { + "EnableRealTimeMatching": (boolean, False), "ProviderProperties": (ProviderProperties, False), "ResolutionType": (str, False), "RuleBasedProperties": (RuleBasedProperties, False), diff --git a/troposphere/evs.py b/troposphere/evs.py index 0bf5a8b23..518f1b68b 100644 --- a/troposphere/evs.py +++ b/troposphere/evs.py @@ -112,18 +112,18 @@ class Environment(AWSObject): resource_type = "AWS::EVS::Environment" props: PropsDictType = { - "ConnectivityInfo": (ConnectivityInfo, True), + "ConnectivityInfo": (ConnectivityInfo, False), "EnvironmentName": (str, False), "Hosts": ([HostInfoForCreate], False), "InitialVlans": (InitialVlans, False), "KmsKeyId": (str, False), - "LicenseInfo": (LicenseInfo, True), + "LicenseInfo": (LicenseInfo, False), "ServiceAccessSecurityGroups": (ServiceAccessSecurityGroups, False), "ServiceAccessSubnetId": (str, True), - "SiteId": (str, True), + "SiteId": (str, False), "Tags": (Tags, False), "TermsAccepted": (boolean, True), - "VcfHostnames": (VcfHostnames, True), + "VcfHostnames": (VcfHostnames, False), "VcfVersion": (str, True), "VpcId": (str, True), } diff --git a/troposphere/globalaccelerator.py b/troposphere/globalaccelerator.py index 8fdc943ee..12456d2f6 100644 --- a/troposphere/globalaccelerator.py +++ b/troposphere/globalaccelerator.py @@ -25,6 +25,9 @@ class Accelerator(AWSObject): props: PropsDictType = { "Enabled": (boolean, False), + "FlowLogsEnabled": (boolean, False), + "FlowLogsS3Bucket": (str, False), + "FlowLogsS3Prefix": (str, False), "IpAddressType": (accelerator_ipaddresstype, False), "IpAddresses": ([str], False), "Name": (str, True), diff --git a/troposphere/glue.py b/troposphere/glue.py index ec0155ae8..39373c57d 100644 --- a/troposphere/glue.py +++ b/troposphere/glue.py @@ -18,6 +18,21 @@ ) +class Blueprint(AWSObject): + """ + `Blueprint `__ + """ + + resource_type = "AWS::Glue::Blueprint" + + props: PropsDictType = { + "BlueprintLocation": (str, True), + "Description": (str, False), + "Name": (str, True), + "Tags": (Tags, False), + } + + class DataLakeAccessProperties(AWSProperty): """ `DataLakeAccessProperties `__ @@ -1383,6 +1398,28 @@ class Table(AWSObject): } +class IcebergCompactionConfiguration(AWSProperty): + """ + `IcebergCompactionConfiguration `__ + """ + + props: PropsDictType = { + "DeleteFileThreshold": (integer, False), + "MinInputFiles": (integer, False), + "Strategy": (str, False), + } + + +class CompactionConfiguration(AWSProperty): + """ + `CompactionConfiguration `__ + """ + + props: PropsDictType = { + "IcebergConfiguration": (IcebergCompactionConfiguration, False), + } + + class IcebergConfiguration(AWSProperty): """ `IcebergConfiguration `__ @@ -1442,6 +1479,7 @@ class TableOptimizerConfiguration(AWSProperty): """ props: PropsDictType = { + "CompactionConfiguration": (CompactionConfiguration, False), "Enabled": (boolean, True), "OrphanFileDeletionConfiguration": (OrphanFileDeletionConfiguration, False), "RetentionConfiguration": (RetentionConfiguration, False), @@ -1577,6 +1615,35 @@ class UsageProfile(AWSObject): } +class ResourceUri(AWSProperty): + """ + `ResourceUri `__ + """ + + props: PropsDictType = { + "ResourceType": (str, False), + "Uri": (str, False), + } + + +class UserDefinedFunction(AWSObject): + """ + `UserDefinedFunction `__ + """ + + resource_type = "AWS::Glue::UserDefinedFunction" + + props: PropsDictType = { + "ClassName": (str, False), + "DatabaseName": (str, True), + "FunctionName": (str, True), + "FunctionType": (str, False), + "OwnerName": (str, False), + "OwnerType": (str, False), + "ResourceUris": ([ResourceUri], False), + } + + class Workflow(AWSObject): """ `Workflow `__ diff --git a/troposphere/grafana.py b/troposphere/grafana.py index 2969d6fb7..a0f8bf318 100644 --- a/troposphere/grafana.py +++ b/troposphere/grafana.py @@ -72,6 +72,17 @@ class SamlConfiguration(AWSProperty): } +class TagsItems(AWSProperty): + """ + `TagsItems `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (str, True), + } + + class VpcConfiguration(AWSProperty): """ `VpcConfiguration `__ @@ -107,5 +118,6 @@ class Workspace(AWSObject): "RoleArn": (str, False), "SamlConfiguration": (SamlConfiguration, False), "StackSetName": (str, False), + "Tags": ([TagsItems], False), "VpcConfiguration": (VpcConfiguration, False), } diff --git a/troposphere/healthlake.py b/troposphere/healthlake.py index e0ed3304a..c7fba9904 100644 --- a/troposphere/healthlake.py +++ b/troposphere/healthlake.py @@ -10,6 +10,66 @@ from .validators import boolean, integer +class ExistingVersionedProfileSource(AWSProperty): + """ + `ExistingVersionedProfileSource `__ + """ + + props: PropsDictType = { + "ProfileId": (str, True), + "Version": (integer, True), + } + + +class ProfileMappingSource(AWSProperty): + """ + `ProfileMappingSource `__ + """ + + props: PropsDictType = { + "ProfileMapping": (dict, True), + } + + +class StarterProfileSource(AWSProperty): + """ + `StarterProfileSource `__ + """ + + props: PropsDictType = { + "StarterProfileName": (str, True), + } + + +class Source(AWSProperty): + """ + `Source `__ + """ + + props: PropsDictType = { + "ExistingVersionedProfileId": (ExistingVersionedProfileSource, False), + "ProfileMapping": (ProfileMappingSource, False), + "StarterProfile": (StarterProfileSource, False), + } + + +class DataTransformationProfile(AWSObject): + """ + `DataTransformationProfile `__ + """ + + resource_type = "AWS::HealthLake::DataTransformationProfile" + + props: PropsDictType = { + "KmsKeyId": (str, False), + "ProfileDescription": (str, False), + "ProfileName": (str, True), + "Source": (Source, False), + "SourceFormat": (str, True), + "Tags": (Tags, False), + } + + class IdentityProviderConfiguration(AWSProperty): """ `IdentityProviderConfiguration `__ diff --git a/troposphere/imagebuilder.py b/troposphere/imagebuilder.py index 6b7b05932..52a6ea444 100644 --- a/troposphere/imagebuilder.py +++ b/troposphere/imagebuilder.py @@ -416,6 +416,7 @@ class Schedule(AWSProperty): False, ), "ScheduleExpression": (str, False), + "Timezone": (str, False), } @@ -434,6 +435,7 @@ class ImagePipeline(AWSObject): "ExecutionRole": (str, False), "ImageRecipeArn": (str, False), "ImageScanningConfiguration": (ImageScanningConfiguration, False), + "ImageTags": (dict, False), "ImageTestsConfiguration": (ImageTestsConfiguration, False), "InfrastructureConfigurationArn": (str, True), "LoggingConfiguration": (PipelineLoggingConfiguration, False), @@ -487,6 +489,7 @@ class ImageRecipe(AWSObject): props: PropsDictType = { "AdditionalInstanceConfiguration": (AdditionalInstanceConfiguration, False), "AmiTags": (dict, False), + "AmiWatermarks": ([str], False), "BlockDeviceMappings": ([InstanceBlockDeviceMapping], False), "Components": ([ComponentConfiguration], False), "Description": (str, False), diff --git a/troposphere/mediaconnect.py b/troposphere/mediaconnect.py index 3133070ed..d4d100c2e 100644 --- a/troposphere/mediaconnect.py +++ b/troposphere/mediaconnect.py @@ -703,6 +703,61 @@ class MaintenanceConfiguration(AWSProperty): } +class BlackFramesConfiguration(AWSProperty): + """ + `BlackFramesConfiguration `__ + """ + + props: PropsDictType = { + "State": (str, True), + "ThresholdSeconds": (integer, True), + } + + +class FrozenFramesConfiguration(AWSProperty): + """ + `FrozenFramesConfiguration `__ + """ + + props: PropsDictType = { + "State": (str, True), + "ThresholdSeconds": (integer, True), + } + + +class SilentAudioConfiguration(AWSProperty): + """ + `SilentAudioConfiguration `__ + """ + + props: PropsDictType = { + "State": (str, True), + "ThresholdSeconds": (integer, True), + } + + +class ContentQualityAnalysisFeatureConfiguration(AWSProperty): + """ + `ContentQualityAnalysisFeatureConfiguration `__ + """ + + props: PropsDictType = { + "BlackFrames": (BlackFramesConfiguration, False), + "FrozenFrames": (FrozenFramesConfiguration, False), + "SilentAudio": (SilentAudioConfiguration, False), + } + + +class RouterContentQualityAnalysisConfiguration(AWSProperty): + """ + `RouterContentQualityAnalysisConfiguration `__ + """ + + props: PropsDictType = { + "ContentLevel": (ContentQualityAnalysisFeatureConfiguration, True), + } + + class RistRouterInputConfiguration(AWSProperty): """ `RistRouterInputConfiguration `__ @@ -934,6 +989,10 @@ class RouterInput(AWSObject): props: PropsDictType = { "AvailabilityZone": (str, False), "Configuration": (RouterInputConfiguration, True), + "ContentQualityAnalysisConfiguration": ( + RouterContentQualityAnalysisConfiguration, + False, + ), "MaintenanceConfiguration": (MaintenanceConfiguration, False), "MaximumBitrate": (integer, True), "Name": (str, True), diff --git a/troposphere/msk.py b/troposphere/msk.py index 9995bd1e0..0f97eb2a0 100644 --- a/troposphere/msk.py +++ b/troposphere/msk.py @@ -23,6 +23,235 @@ class BatchScramSecret(AWSObject): } +class CloudWatchLogsLogDestination(AWSProperty): + """ + `CloudWatchLogsLogDestination `__ + """ + + props: PropsDictType = { + "Enabled": (boolean, True), + "LogGroup": (str, False), + } + + +class FirehoseLogDestination(AWSProperty): + """ + `FirehoseLogDestination `__ + """ + + props: PropsDictType = { + "DeliveryStream": (str, False), + "Enabled": (boolean, True), + } + + +class S3LogDestination(AWSProperty): + """ + `S3LogDestination `__ + """ + + props: PropsDictType = { + "Bucket": (str, False), + "Enabled": (boolean, True), + "Prefix": (str, False), + } + + +class ChannelLoggingInfo(AWSProperty): + """ + `ChannelLoggingInfo `__ + """ + + props: PropsDictType = { + "CloudWatchLogs": (CloudWatchLogsLogDestination, False), + "Firehose": (FirehoseLogDestination, False), + "S3": (S3LogDestination, False), + } + + +class EncryptionConfiguration(AWSProperty): + """ + `EncryptionConfiguration `__ + """ + + props: PropsDictType = { + "KmsKeyArn": (str, True), + } + + +class Catalog(AWSProperty): + """ + `Catalog `__ + """ + + props: PropsDictType = { + "CatalogArn": (str, False), + "WarehouseLocation": (str, False), + } + + +class DeadLetterQueueS3(AWSProperty): + """ + `DeadLetterQueueS3 `__ + """ + + props: PropsDictType = { + "BucketArn": (str, True), + "ErrorOutputPrefix": (str, True), + "ExpectedBucketOwner": (str, False), + } + + +class PartitionSource(AWSProperty): + """ + `PartitionSource `__ + """ + + props: PropsDictType = { + "SourceName": (str, False), + } + + +class PartitionSpec(AWSProperty): + """ + `PartitionSpec `__ + """ + + props: PropsDictType = { + "PartitionStrategy": (str, True), + "SourceList": ([PartitionSource], False), + } + + +class DestinationTable(AWSProperty): + """ + `DestinationTable `__ + """ + + props: PropsDictType = { + "DestinationDatabaseName": (str, True), + "DestinationTableName": (str, True), + "PartitionSpec": (PartitionSpec, False), + } + + +class SchemaEvolution(AWSProperty): + """ + `SchemaEvolution `__ + """ + + props: PropsDictType = { + "EnableSchemaEvolution": (boolean, True), + } + + +class TableCreation(AWSProperty): + """ + `TableCreation `__ + """ + + props: PropsDictType = { + "EnableTableCreation": (boolean, True), + } + + +class IcebergDestinationConfiguration(AWSProperty): + """ + `IcebergDestinationConfiguration `__ + """ + + props: PropsDictType = { + "AppendOnly": (boolean, True), + "Catalog": (Catalog, False), + "CompressionType": (str, False), + "DataFreshnessInSeconds": (integer, False), + "DeadLetterQueueS3": (DeadLetterQueueS3, True), + "DestinationTableList": ([DestinationTable], True), + "SchemaEvolution": (SchemaEvolution, True), + "ServiceExecutionRoleArn": (str, True), + "TableCreation": (TableCreation, True), + } + + +class S3Storage(AWSProperty): + """ + `S3Storage `__ + """ + + props: PropsDictType = { + "BucketArn": (str, True), + "CompressionType": (str, True), + "ExpectedBucketOwner": (str, False), + "OutputKeyTemplate": (str, False), + "OutputPrefix": (str, False), + "StorageClass": (str, True), + } + + +class S3DestinationConfiguration(AWSProperty): + """ + `S3DestinationConfiguration `__ + """ + + props: PropsDictType = { + "DataFreshnessInSeconds": (integer, False), + "DeadLetterQueueS3": (DeadLetterQueueS3, True), + "ServiceExecutionRoleArn": (str, True), + "Storage": (S3Storage, True), + } + + +class RecordConverter(AWSProperty): + """ + `RecordConverter `__ + """ + + props: PropsDictType = { + "ValueConverter": (str, True), + } + + +class RecordSchema(AWSProperty): + """ + `RecordSchema `__ + """ + + props: PropsDictType = { + "GsrArn": (str, True), + } + + +class TopicConfiguration(AWSProperty): + """ + `TopicConfiguration `__ + """ + + props: PropsDictType = { + "RecordConverter": (RecordConverter, True), + "RecordSchema": (RecordSchema, False), + "TopicArn": (str, True), + } + + +class Channel(AWSObject): + """ + `Channel `__ + """ + + resource_type = "AWS::MSK::Channel" + + props: PropsDictType = { + "ChannelName": (str, True), + "ClusterArn": (str, False), + "EncryptionConfiguration": (EncryptionConfiguration, False), + "IcebergDestinationConfiguration": (IcebergDestinationConfiguration, False), + "LoggingInfo": (ChannelLoggingInfo, False), + "S3DestinationConfiguration": (S3DestinationConfiguration, False), + "Tags": (dict, False), + "TopicConfigurationList": ([TopicConfiguration], True), + } + + class PublicAccess(AWSProperty): """ `PublicAccess `__ @@ -696,3 +925,14 @@ class VpcConnection(AWSObject): "TargetClusterArn": (str, True), "VpcId": (str, True), } + + +class ChannelStateInfo(AWSProperty): + """ + `ChannelStateInfo `__ + """ + + props: PropsDictType = { + "Code": (str, False), + "Message": (str, False), + } diff --git a/troposphere/opensearchserverless.py b/troposphere/opensearchserverless.py index 62496b187..56686a9c2 100644 --- a/troposphere/opensearchserverless.py +++ b/troposphere/opensearchserverless.py @@ -110,6 +110,29 @@ class CollectionIndex(AWSObject): } +class AnalyzerItems(AWSProperty): + """ + `AnalyzerItems `__ + """ + + props: PropsDictType = { + "CharFilter": ([str], False), + "Filter": ([str], False), + "Tokenizer": (str, False), + "Type": (str, False), + } + + +class Analysis(AWSProperty): + """ + `Analysis `__ + """ + + props: PropsDictType = { + "Analyzer": (dict, False), + } + + class IndexProperty(AWSProperty): """ `IndexProperty `__ @@ -128,6 +151,7 @@ class IndexSettings(AWSProperty): """ props: PropsDictType = { + "Analysis": (Analysis, False), "Index": (IndexProperty, False), } @@ -162,10 +186,14 @@ class PropertyMapping(AWSProperty): """ props: PropsDictType = { + "Analyzer": (str, False), + "CompressionLevel": (str, False), + "DataType": (str, False), "Dimension": (integer, False), "Index": (boolean, False), "Method": (Method, False), "Properties": (dict, False), + "SpaceType": (str, False), "Type": (str, True), "Value": (str, False), } diff --git a/troposphere/opensearchservice.py b/troposphere/opensearchservice.py index 1f6f8dd0a..59ec8f889 100644 --- a/troposphere/opensearchservice.py +++ b/troposphere/opensearchservice.py @@ -434,6 +434,7 @@ class Domain(AWSObject): "DomainName": (str, False), "EBSOptions": (EBSOptions, False), "EncryptionAtRestOptions": (EncryptionAtRestOptions, False), + "EngineMode": (str, False), "EngineVersion": (validate_search_service_engine_version, False), "IPAddressType": (str, False), "IdentityCenterOptions": (IdentityCenterOptions, False), @@ -444,6 +445,7 @@ class Domain(AWSObject): "SnapshotOptions": (SnapshotOptions, False), "SoftwareUpdateOptions": (SoftwareUpdateOptions, False), "Tags": (Tags, False), + "UseCase": (str, False), "VPCOptions": (VPCOptions, False), } diff --git a/troposphere/pcs.py b/troposphere/pcs.py index f8e49b252..0e419ebe9 100644 --- a/troposphere/pcs.py +++ b/troposphere/pcs.py @@ -92,6 +92,54 @@ class InstanceConfig(AWSProperty): } +class ScriptSource(AWSProperty): + """ + `ScriptSource `__ + """ + + props: PropsDictType = { + "Checksum": (str, False), + "S3VersionId": (str, False), + "ScriptLocation": (str, True), + } + + +class NodeLifecycleScript(AWSProperty): + """ + `NodeLifecycleScript `__ + """ + + props: PropsDictType = { + "Arguments": ([str], False), + "ExecutionPolicy": (str, False), + "Name": (str, True), + "OnError": (str, False), + "ScriptSource": (ScriptSource, True), + } + + +class NodeLifecycleStages(AWSProperty): + """ + `NodeLifecycleStages `__ + """ + + props: PropsDictType = { + "NodeBootstrapped": ([NodeLifecycleScript], False), + "NodeReady": ([NodeLifecycleScript], False), + } + + +class NodeLifecycleActions(AWSProperty): + """ + `NodeLifecycleActions `__ + """ + + props: PropsDictType = { + "ScriptCachingPolicy": (str, False), + "Stages": (NodeLifecycleStages, True), + } + + class ScalingConfiguration(AWSProperty): """ `ScalingConfiguration `__ @@ -127,6 +175,7 @@ class ComputeNodeGroup(AWSObject): "IamInstanceProfileArn": (str, True), "InstanceConfigs": ([InstanceConfig], True), "Name": (str, False), + "NodeLifecycleActions": (NodeLifecycleActions, False), "PurchaseOption": (str, False), "ScalingConfiguration": (ScalingConfiguration, True), "SlurmConfiguration": (SlurmConfiguration, False), diff --git a/troposphere/personalize.py b/troposphere/personalize.py index 94047b749..08e0c13b5 100644 --- a/troposphere/personalize.py +++ b/troposphere/personalize.py @@ -20,21 +20,6 @@ class DataSource(AWSProperty): } -class DataDeletionJob(AWSObject): - """ - `DataDeletionJob `__ - """ - - resource_type = "AWS::Personalize::DataDeletionJob" - - props: PropsDictType = { - "DataSource": (DataSource, False), - "DatasetGroupArn": (str, False), - "JobName": (str, False), - "RoleArn": (str, False), - } - - class DatasetImportJob(AWSProperty): """ `DatasetImportJob `__ diff --git a/troposphere/quicksight.py b/troposphere/quicksight.py index f661a8b8e..e6e411e28 100644 --- a/troposphere/quicksight.py +++ b/troposphere/quicksight.py @@ -184,6 +184,77 @@ class ActionConnector(AWSObject): } +class AgentTag(AWSProperty): + """ + `AgentTag `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (str, True), + } + + +class CustomPromptInputParameters(AWSProperty): + """ + `CustomPromptInputParameters `__ + """ + + props: PropsDictType = { + "CustomInstructions": (str, False), + "Identity": (str, False), + "OutputStyle": (str, False), + "ResponseLength": (str, False), + "Tone": (str, False), + } + + +class CustomPromptProfile(AWSProperty): + """ + `CustomPromptProfile `__ + """ + + props: PropsDictType = { + "ModelProfileId": (str, True), + "QbsAwsAccountId": (str, True), + "SubscriptionId": (str, True), + } + + +class CustomPromptInput(AWSProperty): + """ + `CustomPromptInput `__ + """ + + props: PropsDictType = { + "ExistingPrompt": (CustomPromptProfile, False), + "NewPrompt": (CustomPromptInputParameters, False), + } + + +class Agent(AWSObject): + """ + `Agent `__ + """ + + resource_type = "AWS::QuickSight::Agent" + + props: PropsDictType = { + "ActionConnectors": ([str], False), + "AgentId": (str, True), + "AgentLifecycle": (str, False), + "AwsAccountId": (str, True), + "CustomPromptInput": (CustomPromptInput, False), + "Description": (str, False), + "IconId": (str, False), + "Name": (str, True), + "Spaces": ([str], False), + "StarterPrompts": ([str], False), + "Tags": ([AgentTag], False), + "WelcomeMessage": (str, False), + } + + class FreeFormLayoutScreenCanvasSizeOptions(AWSProperty): """ `FreeFormLayoutScreenCanvasSizeOptions `__ @@ -9146,6 +9217,33 @@ class DataSource(AWSObject): } +class Permission(AWSProperty): + """ + `Permission `__ + """ + + props: PropsDictType = { + "Actions": ([str], True), + "Principal": (str, True), + } + + +class Flow(AWSObject): + """ + `Flow `__ + """ + + resource_type = "AWS::QuickSight::Flow" + + props: PropsDictType = { + "AwsAccountId": (str, True), + "Description": (str, False), + "FlowDefinition": (dict, True), + "Name": (str, True), + "Permissions": ([Permission], False), + } + + class Folder(AWSObject): """ `Folder `__ @@ -9165,6 +9263,137 @@ class Folder(AWSObject): } +class AccessControlConfiguration(AWSProperty): + """ + `AccessControlConfiguration `__ + """ + + props: PropsDictType = { + "IsACLEnabled": (boolean, False), + } + + +class KbTemplateConfiguration(AWSProperty): + """ + `KbTemplateConfiguration `__ + """ + + props: PropsDictType = { + "Template": (dict, False), + } + + +class KnowledgeBaseConfiguration(AWSProperty): + """ + `KnowledgeBaseConfiguration `__ + """ + + props: PropsDictType = { + "TemplateConfiguration": (KbTemplateConfiguration, False), + } + + +class AudioExtractionConfiguration(AWSProperty): + """ + `AudioExtractionConfiguration `__ + """ + + props: PropsDictType = { + "AudioExtractionStatus": (str, True), + } + + +class ImageExtractionConfiguration(AWSProperty): + """ + `ImageExtractionConfiguration `__ + """ + + props: PropsDictType = { + "ImageExtractionStatus": (str, True), + } + + +class VideoExtractionConfiguration(AWSProperty): + """ + `VideoExtractionConfiguration `__ + """ + + props: PropsDictType = { + "VideoExtractionStatus": (str, True), + "VideoExtractionType": (str, False), + } + + +class MediaExtractionConfiguration(AWSProperty): + """ + `MediaExtractionConfiguration `__ + """ + + props: PropsDictType = { + "AudioExtractionConfiguration": (AudioExtractionConfiguration, False), + "ImageExtractionConfiguration": (ImageExtractionConfiguration, False), + "VideoExtractionConfiguration": (VideoExtractionConfiguration, False), + } + + +class KnowledgeBase(AWSObject): + """ + `KnowledgeBase `__ + """ + + resource_type = "AWS::QuickSight::KnowledgeBase" + + props: PropsDictType = { + "AccessControlConfiguration": (AccessControlConfiguration, False), + "AwsAccountId": (str, True), + "DataSourceArn": (str, True), + "Description": (str, False), + "IsEmailNotificationOptedForIngestionFailures": (boolean, False), + "KnowledgeBaseConfiguration": (KnowledgeBaseConfiguration, True), + "KnowledgeBaseId": (str, True), + "MediaExtractionConfiguration": (MediaExtractionConfiguration, False), + "Name": (str, True), + "Permissions": ([ResourcePermission], False), + "PrimaryOwnerArn": (str, False), + "Tags": (Tags, False), + } + + +class IdentityProviderVpcConnectionProperties(AWSProperty): + """ + `IdentityProviderVpcConnectionProperties `__ + """ + + props: PropsDictType = { + "VpcConnectionArn": (str, True), + } + + +class OAuthClientApplication(AWSObject): + """ + `OAuthClientApplication `__ + """ + + resource_type = "AWS::QuickSight::OAuthClientApplication" + + props: PropsDictType = { + "ClientId": (str, False), + "ClientSecret": (str, False), + "DataSourceType": (str, False), + "IdentityProviderVpcConnectionProperties": ( + IdentityProviderVpcConnectionProperties, + False, + ), + "Name": (str, True), + "OAuthAuthorizationEndpointUrl": (str, False), + "OAuthClientApplicationId": (str, True), + "OAuthClientAuthenticationType": (str, True), + "OAuthScopes": (str, False), + "OAuthTokenEndpointUrl": (str, True), + "Tags": (Tags, False), + } + + class RefreshOnDay(AWSProperty): """ `RefreshOnDay `__ @@ -9216,6 +9445,35 @@ class RefreshSchedule(AWSObject): } +class SpaceResource(AWSProperty): + """ + `SpaceResource `__ + """ + + props: PropsDictType = { + "ResourceArn": (str, True), + "ResourceType": (str, True), + } + + +class Space(AWSObject): + """ + `Space `__ + """ + + resource_type = "AWS::QuickSight::Space" + + props: PropsDictType = { + "AwsAccountId": (str, True), + "Description": (str, False), + "Name": (str, True), + "Permissions": ([ResourcePermission], False), + "Resources": ([SpaceResource], False), + "SpaceId": (str, True), + "Tags": (Tags, False), + } + + class TemplateSourceAnalysis(AWSProperty): """ `TemplateSourceAnalysis `__ @@ -9900,6 +10158,24 @@ class VPCConnection(AWSObject): } +class CustomPromptInterface(AWSProperty): + """ + `CustomPromptInterface `__ + """ + + props: PropsDictType = { + "CustomInstructions": (str, False), + "Identity": (str, False), + "ModelProfileId": (str, False), + "OutputStyle": (str, False), + "PromptSummary": (str, False), + "QbsAwsAccountId": (str, False), + "ResponseLength": (str, False), + "SubscriptionId": (str, False), + "Tone": (str, False), + } + + class DashboardError(AWSProperty): """ `DashboardError `__ @@ -9949,6 +10225,17 @@ class NetworkInterface(AWSProperty): } +class StepAliasMapping(AWSProperty): + """ + `StepAliasMapping `__ + """ + + props: PropsDictType = { + "StepAlias": (str, True), + "StepId": (str, True), + } + + class TemplateError(AWSProperty): """ `TemplateError `__ diff --git a/troposphere/route53resolver.py b/troposphere/route53resolver.py index c2db0838c..948caab29 100644 --- a/troposphere/route53resolver.py +++ b/troposphere/route53resolver.py @@ -46,6 +46,16 @@ class FirewallAdvancedThreatCategoryConfig(AWSProperty): } +class PartnerThreatProtectionConfig(AWSProperty): + """ + `PartnerThreatProtectionConfig `__ + """ + + props: PropsDictType = { + "Partner": (str, True), + } + + class FirewallRuleType(AWSProperty): """ `FirewallRuleType `__ @@ -57,6 +67,7 @@ class FirewallRuleType(AWSProperty): False, ), "FirewallAdvancedThreatCategory": (FirewallAdvancedThreatCategoryConfig, False), + "PartnerThreatProtection": (PartnerThreatProtectionConfig, False), } @@ -79,6 +90,7 @@ class FirewallRule(AWSProperty): "FirewallThreatProtectionId": (str, False), "Priority": (integer, True), "Qtype": (str, False), + "Status": (str, False), } diff --git a/troposphere/sagemaker.py b/troposphere/sagemaker.py index 19a70e66b..f18e0f5b4 100644 --- a/troposphere/sagemaker.py +++ b/troposphere/sagemaker.py @@ -10,6 +10,50 @@ from .validators import boolean, double, integer +class ActionSource(AWSProperty): + """ + `ActionSource `__ + """ + + props: PropsDictType = { + "SourceId": (str, False), + "SourceType": (str, False), + "SourceUri": (str, True), + } + + +class MetadataProperties(AWSProperty): + """ + `MetadataProperties `__ + """ + + props: PropsDictType = { + "CommitId": (str, False), + "GeneratedBy": (str, False), + "ProjectId": (str, False), + "Repository": (str, False), + } + + +class Action(AWSObject): + """ + `Action `__ + """ + + resource_type = "AWS::SageMaker::Action" + + props: PropsDictType = { + "ActionName": (str, True), + "ActionType": (str, True), + "Description": (str, False), + "MetadataProperties": (MetadataProperties, False), + "Properties": (dict, False), + "Source": (ActionSource, True), + "Status": (str, False), + "Tags": (Tags, False), + } + + class ModelAccessConfig(AWSProperty): """ `ModelAccessConfig `__ @@ -239,6 +283,7 @@ class ResourceSpec(AWSProperty): "LifecycleConfigArn": (str, False), "SageMakerImageArn": (str, False), "SageMakerImageVersionArn": (str, False), + "TrainingPlanArn": (str, False), } @@ -367,208 +412,230 @@ class ClusterAutoScalingConfig(AWSProperty): } -class ClusterCapacityRequirements(AWSProperty): +class Alarm(AWSProperty): """ - `ClusterCapacityRequirements `__ + `Alarm `__ """ props: PropsDictType = { - "OnDemand": (dict, False), - "Spot": (dict, False), + "AlarmName": (str, True), } -class ClusterEbsVolumeConfig(AWSProperty): +class AutoRollbackConfig(AWSProperty): """ - `ClusterEbsVolumeConfig `__ + `AutoRollbackConfig `__ """ props: PropsDictType = { - "RootVolume": (boolean, False), - "VolumeKmsKeyId": (str, False), - "VolumeSizeInGB": (integer, False), + "Alarms": ([Alarm], True), } -class ClusterFsxLustreConfig(AWSProperty): +class CapacitySize(AWSProperty): """ - `ClusterFsxLustreConfig `__ + `CapacitySize `__ """ props: PropsDictType = { - "DnsName": (str, True), - "MountName": (str, True), - "MountPath": (str, False), + "Type": (str, True), + "Value": (integer, True), } -class ClusterFsxOpenZfsConfig(AWSProperty): +class TrafficRoutingConfig(AWSProperty): """ - `ClusterFsxOpenZfsConfig `__ + `TrafficRoutingConfig `__ """ props: PropsDictType = { - "DnsName": (str, True), - "MountPath": (str, False), + "CanarySize": (CapacitySize, False), + "LinearStepSize": (CapacitySize, False), + "Type": (str, True), + "WaitIntervalInSeconds": (integer, False), } -class ClusterInstanceStorageConfig(AWSProperty): +class BlueGreenUpdatePolicy(AWSProperty): """ - `ClusterInstanceStorageConfig `__ + `BlueGreenUpdatePolicy `__ """ props: PropsDictType = { - "EbsVolumeConfig": (ClusterEbsVolumeConfig, False), - "FsxLustreConfig": (ClusterFsxLustreConfig, False), - "FsxOpenZfsConfig": (ClusterFsxOpenZfsConfig, False), + "MaximumExecutionTimeoutInSeconds": (integer, False), + "TerminationWaitInSeconds": (integer, False), + "TrafficRoutingConfiguration": (TrafficRoutingConfig, True), } -class ClusterKubernetesTaint(AWSProperty): +class RollingUpdatePolicy(AWSProperty): """ - `ClusterKubernetesTaint `__ + `RollingUpdatePolicy `__ """ props: PropsDictType = { - "Effect": (str, True), - "Key": (str, True), - "Value": (str, False), + "MaximumBatchSize": (CapacitySize, True), + "MaximumExecutionTimeoutInSeconds": (integer, False), + "RollbackMaximumBatchSize": (CapacitySize, False), + "WaitIntervalInSeconds": (integer, True), } -class ClusterKubernetesConfig(AWSProperty): +class DeploymentConfig(AWSProperty): """ - `ClusterKubernetesConfig `__ + `DeploymentConfig `__ """ props: PropsDictType = { - "Labels": (dict, False), - "Taints": ([ClusterKubernetesTaint], False), + "AutoRollbackConfiguration": (AutoRollbackConfig, False), + "BlueGreenUpdatePolicy": (BlueGreenUpdatePolicy, False), + "RollingUpdatePolicy": (RollingUpdatePolicy, False), } -class ClusterLifeCycleConfig(AWSProperty): +class PatchSchedule(AWSProperty): """ - `ClusterLifeCycleConfig `__ + `PatchSchedule `__ """ props: PropsDictType = { - "OnCreate": (str, False), - "OnInitComplete": (str, False), - "SourceS3Uri": (str, False), + "NextPatchDate": (str, False), } -class ClusterNetworkInterface(AWSProperty): +class AutoPatchConfig(AWSProperty): """ - `ClusterNetworkInterface `__ + `AutoPatchConfig `__ """ props: PropsDictType = { - "InterfaceType": (str, True), + "DeploymentConfig": (DeploymentConfig, False), + "PatchSchedule": (PatchSchedule, False), + "PatchingStrategy": (str, True), } -class ClusterSlurmConfig(AWSProperty): +class ClusterCapacityRequirements(AWSProperty): """ - `ClusterSlurmConfig `__ + `ClusterCapacityRequirements `__ """ props: PropsDictType = { - "NodeType": (str, True), - "PartitionNames": ([str], False), + "OnDemand": (dict, False), + "Spot": (dict, False), } -class InstanceRequirements(AWSProperty): +class ClusterEbsVolumeConfig(AWSProperty): """ - `InstanceRequirements `__ + `ClusterEbsVolumeConfig `__ """ props: PropsDictType = { - "InstanceTypes": ([str], True), + "RootVolume": (boolean, False), + "VolumeKmsKeyId": (str, False), + "VolumeSizeInGB": (integer, False), } -class Alarm(AWSProperty): +class ClusterFsxLustreConfig(AWSProperty): """ - `Alarm `__ + `ClusterFsxLustreConfig `__ """ props: PropsDictType = { - "AlarmName": (str, True), + "DnsName": (str, True), + "MountName": (str, True), + "MountPath": (str, False), } -class AutoRollbackConfig(AWSProperty): +class ClusterFsxOpenZfsConfig(AWSProperty): """ - `AutoRollbackConfig `__ + `ClusterFsxOpenZfsConfig `__ """ props: PropsDictType = { - "Alarms": ([Alarm], True), + "DnsName": (str, True), + "MountPath": (str, False), } -class CapacitySize(AWSProperty): +class ClusterInstanceStorageConfig(AWSProperty): """ - `CapacitySize `__ + `ClusterInstanceStorageConfig `__ """ props: PropsDictType = { - "Type": (str, True), - "Value": (integer, True), + "EbsVolumeConfig": (ClusterEbsVolumeConfig, False), + "FsxLustreConfig": (ClusterFsxLustreConfig, False), + "FsxOpenZfsConfig": (ClusterFsxOpenZfsConfig, False), } -class TrafficRoutingConfig(AWSProperty): +class ClusterKubernetesTaint(AWSProperty): """ - `TrafficRoutingConfig `__ + `ClusterKubernetesTaint `__ """ props: PropsDictType = { - "CanarySize": (CapacitySize, False), - "LinearStepSize": (CapacitySize, False), - "Type": (str, True), - "WaitIntervalInSeconds": (integer, False), + "Effect": (str, True), + "Key": (str, True), + "Value": (str, False), } -class BlueGreenUpdatePolicy(AWSProperty): +class ClusterKubernetesConfig(AWSProperty): """ - `BlueGreenUpdatePolicy `__ + `ClusterKubernetesConfig `__ """ props: PropsDictType = { - "MaximumExecutionTimeoutInSeconds": (integer, False), - "TerminationWaitInSeconds": (integer, False), - "TrafficRoutingConfiguration": (TrafficRoutingConfig, True), + "Labels": (dict, False), + "Taints": ([ClusterKubernetesTaint], False), } -class RollingUpdatePolicy(AWSProperty): +class ClusterLifeCycleConfig(AWSProperty): """ - `RollingUpdatePolicy `__ + `ClusterLifeCycleConfig `__ """ props: PropsDictType = { - "MaximumBatchSize": (CapacitySize, True), - "MaximumExecutionTimeoutInSeconds": (integer, False), - "RollbackMaximumBatchSize": (CapacitySize, False), - "WaitIntervalInSeconds": (integer, True), + "OnCreate": (str, False), + "OnInitComplete": (str, False), + "SourceS3Uri": (str, False), } -class DeploymentConfig(AWSProperty): +class ClusterNetworkInterface(AWSProperty): """ - `DeploymentConfig `__ + `ClusterNetworkInterface `__ """ props: PropsDictType = { - "AutoRollbackConfiguration": (AutoRollbackConfig, False), - "BlueGreenUpdatePolicy": (BlueGreenUpdatePolicy, False), - "RollingUpdatePolicy": (RollingUpdatePolicy, False), + "InterfaceType": (str, True), + } + + +class ClusterSlurmConfig(AWSProperty): + """ + `ClusterSlurmConfig `__ + """ + + props: PropsDictType = { + "NodeType": (str, True), + "PartitionNames": ([str], False), + } + + +class InstanceRequirements(AWSProperty): + """ + `InstanceRequirements `__ + """ + + props: PropsDictType = { + "InstanceTypes": ([str], True), } @@ -600,6 +667,7 @@ class ClusterInstanceGroup(AWSProperty): """ props: PropsDictType = { + "AutoPatchConfig": (AutoPatchConfig, False), "CapacityRequirements": (ClusterCapacityRequirements, False), "CurrentCount": (integer, False), "ExecutionRole": (str, True), @@ -775,6 +843,46 @@ class CodeRepository(AWSObject): } +class Source(AWSProperty): + """ + `Source `__ + """ + + props: PropsDictType = { + "SourceId": (str, False), + "SourceType": (str, False), + "SourceUri": (str, True), + } + + +class TagsItems(AWSProperty): + """ + `TagsItems `__ + """ + + props: PropsDictType = { + "Key": (str, True), + "Value": (str, True), + } + + +class Context(AWSObject): + """ + `Context `__ + """ + + resource_type = "AWS::SageMaker::Context" + + props: PropsDictType = { + "ContextName": (str, True), + "ContextType": (str, True), + "Description": (str, False), + "Properties": (dict, False), + "Source": (Source, True), + "Tags": ([TagsItems], False), + } + + class DataQualityAppSpecification(AWSProperty): """ `DataQualityAppSpecification `__ @@ -1169,6 +1277,17 @@ class CustomImage(AWSProperty): } +class EmrSettings(AWSProperty): + """ + `EmrSettings `__ + """ + + props: PropsDictType = { + "AssumableRoleArns": ([str], False), + "ExecutionRoleArns": ([str], False), + } + + class JupyterLabAppSettings(AWSProperty): """ `JupyterLabAppSettings `__ @@ -1180,6 +1299,7 @@ class JupyterLabAppSettings(AWSProperty): "CodeRepositories": ([CodeRepositoryProperty], False), "CustomImages": ([CustomImage], False), "DefaultResourceSpec": (ResourceSpec, False), + "EmrSettings": (EmrSettings, False), "LifecycleConfigArns": ([str], False), } @@ -1408,7 +1528,6 @@ class Endpoint(AWSObject): props: PropsDictType = { "DeploymentConfig": (DeploymentConfig, False), "EndpointConfigName": (str, True), - "EndpointName": (str, False), "ExcludeRetainedVariantProperties": ([VariantProperty], False), "RetainAllVariantProperties": (boolean, False), "RetainDeploymentConfig": (boolean, False), @@ -1681,6 +1800,50 @@ class EndpointConfig(AWSObject): } +class Experiment(AWSObject): + """ + `Experiment `__ + """ + + resource_type = "AWS::SageMaker::Experiment" + + props: PropsDictType = { + "Description": (str, False), + "DisplayName": (str, False), + "ExperimentName": (str, True), + "Tags": ([TagsItems], False), + } + + +class Status(AWSProperty): + """ + `Status `__ + """ + + props: PropsDictType = { + "Message": (str, False), + "PrimaryStatus": (str, False), + } + + +class ExperimentTrialComponent(AWSObject): + """ + `ExperimentTrialComponent `__ + """ + + resource_type = "AWS::SageMaker::ExperimentTrialComponent" + + props: PropsDictType = { + "DisplayName": (str, False), + "EndTime": (str, False), + "MetadataProperties": (MetadataProperties, False), + "StartTime": (str, False), + "Status": (Status, False), + "Tags": ([TagsItems], False), + "TrialComponentName": (str, True), + } + + class FeatureDefinition(AWSProperty): """ `FeatureDefinition `__ @@ -2586,31 +2749,6 @@ class ModelCard(AWSObject): } -class ModelCardExportOutputConfig(AWSProperty): - """ - `ModelCardExportOutputConfig `__ - """ - - props: PropsDictType = { - "S3OutputPath": (str, True), - } - - -class ModelCardExportJob(AWSObject): - """ - `ModelCardExportJob `__ - """ - - resource_type = "AWS::SageMaker::ModelCardExportJob" - - props: PropsDictType = { - "ModelCardExportJobName": (str, True), - "ModelCardName": (str, True), - "ModelCardVersion": (integer, False), - "OutputConfig": (ModelCardExportOutputConfig, True), - } - - class ModelExplainabilityAppSpecification(AWSProperty): """ `ModelExplainabilityAppSpecification `__ @@ -2784,19 +2922,6 @@ class DriftCheckBaselines(AWSProperty): } -class MetadataProperties(AWSProperty): - """ - `MetadataProperties `__ - """ - - props: PropsDictType = { - "CommitId": (str, False), - "GeneratedBy": (str, False), - "ProjectId": (str, False), - "Repository": (str, False), - } - - class ModelCardProperty(AWSProperty): """ `ModelCardProperty `__ @@ -3838,6 +3963,58 @@ class StudioLifecycleConfig(AWSObject): } +class TrialComponentArtifact(AWSProperty): + """ + `TrialComponentArtifact `__ + """ + + props: PropsDictType = { + "MediaType": (str, False), + "Value": (str, True), + } + + +class TrialComponentParameterValue(AWSProperty): + """ + `TrialComponentParameterValue `__ + """ + + props: PropsDictType = { + "NumberValue": (double, False), + "StringValue": (str, False), + } + + +class TrialComponentStatus(AWSProperty): + """ + `TrialComponentStatus `__ + """ + + props: PropsDictType = { + "Message": (str, False), + "PrimaryStatus": (str, False), + } + + +class TrialComponent(AWSObject): + """ + `TrialComponent `__ + """ + + resource_type = "AWS::SageMaker::TrialComponent" + + props: PropsDictType = { + "DisplayName": (str, False), + "InputArtifacts": (dict, False), + "MetadataProperties": (MetadataProperties, False), + "OutputArtifacts": (dict, False), + "Parameters": (dict, False), + "Status": (TrialComponentStatus, False), + "Tags": ([TagsItems], False), + "TrialComponentName": (str, True), + } + + class UserProfile(AWSObject): """ `UserProfile `__ @@ -3970,16 +4147,6 @@ class HubAccessConfig(AWSProperty): } -class ModelCardExportArtifacts(AWSProperty): - """ - `ModelCardExportArtifacts `__ - """ - - props: PropsDictType = { - "S3ExportArtifacts": (str, True), - } - - class RSessionAppSettings(AWSProperty): """ `RSessionAppSettings `__ diff --git a/troposphere/securityhub.py b/troposphere/securityhub.py index 8c71d9276..e2c142eb4 100644 --- a/troposphere/securityhub.py +++ b/troposphere/securityhub.py @@ -459,6 +459,29 @@ class ConfigurationPolicy(AWSObject): } +class AzureScopeConfiguration(AWSProperty): + """ + `AzureScopeConfiguration `__ + """ + + props: PropsDictType = { + "ScopeType": (str, True), + "ScopeValues": ([str], False), + } + + +class AzureProviderConfiguration(AWSProperty): + """ + `AzureProviderConfiguration `__ + """ + + props: PropsDictType = { + "AWSConfigConnectorArn": (str, True), + "AzureRegions": ([str], True), + "ScopeConfiguration": (AzureScopeConfiguration, True), + } + + class JiraCloudProviderConfiguration(AWSProperty): """ `JiraCloudProviderConfiguration `__ @@ -486,11 +509,27 @@ class Provider(AWSProperty): """ props: PropsDictType = { + "Azure": (AzureProviderConfiguration, False), "JiraCloud": (JiraCloudProviderConfiguration, False), "ServiceNow": (ServiceNowProviderConfiguration, False), } +class Connector(AWSObject): + """ + `Connector `__ + """ + + resource_type = "AWS::SecurityHub::Connector" + + props: PropsDictType = { + "Description": (str, False), + "Name": (str, True), + "Provider": (Provider, True), + "Tags": (dict, False), + } + + class ConnectorV2(AWSObject): """ `ConnectorV2 `__ @@ -769,3 +808,14 @@ class Standard(AWSObject): "DisabledStandardsControls": ([StandardsControl], False), "StandardsArn": (str, True), } + + +class HealthIssue(AWSProperty): + """ + `HealthIssue `__ + """ + + props: PropsDictType = { + "Code": (str, True), + "Message": (str, True), + } diff --git a/troposphere/servicecatalog.py b/troposphere/servicecatalog.py index 3866ce3f9..afd9771b0 100644 --- a/troposphere/servicecatalog.py +++ b/troposphere/servicecatalog.py @@ -24,6 +24,17 @@ class AcceptedPortfolioShare(AWSObject): } +class Info(AWSProperty): + """ + `Info `__ + """ + + props: PropsDictType = { + "ImportFromPhysicalId": (str, False), + "LoadTemplateFromURL": (str, False), + } + + class ProvisioningArtifactProperties(AWSProperty): """ `ProvisioningArtifactProperties `__ @@ -32,7 +43,7 @@ class ProvisioningArtifactProperties(AWSProperty): props: PropsDictType = { "Description": (str, False), "DisableTemplateValidation": (boolean, False), - "Info": (dict, True), + "Info": (Info, True), "Name": (str, False), "Type": (str, False), } @@ -53,7 +64,7 @@ class CodeStarParameters(AWSProperty): class ConnectionParameters(AWSProperty): """ - `ConnectionParameters `__ + `ConnectionParameters `__ """ props: PropsDictType = { diff --git a/troposphere/smsvoice.py b/troposphere/smsvoice.py index 303c0c1cd..c5d3e1b1c 100644 --- a/troposphere/smsvoice.py +++ b/troposphere/smsvoice.py @@ -210,6 +210,19 @@ class ProtectConfiguration(AWSObject): } +class Registration(AWSObject): + """ + `Registration `__ + """ + + resource_type = "AWS::SMSVOICE::Registration" + + props: PropsDictType = { + "RegistrationType": (str, True), + "Tags": (Tags, False), + } + + class ResourcePolicy(AWSObject): """ `ResourcePolicy `__ diff --git a/troposphere/ssm.py b/troposphere/ssm.py index 044cdbcd8..57e527910 100644 --- a/troposphere/ssm.py +++ b/troposphere/ssm.py @@ -302,6 +302,24 @@ class MaintenanceWindowTask(AWSObject): } +class OpsItem(AWSObject): + """ + `OpsItem `__ + """ + + resource_type = "AWS::SSM::OpsItem" + + props: PropsDictType = { + "Category": (str, False), + "Description": (str, True), + "Priority": (integer, False), + "Severity": (str, False), + "Source": (str, True), + "Tags": (Tags, False), + "Title": (str, True), + } + + class Parameter(AWSObject): """ `Parameter `__ diff --git a/troposphere/vpclattice.py b/troposphere/vpclattice.py index 57b8a7b7d..ce9fd2f88 100644 --- a/troposphere/vpclattice.py +++ b/troposphere/vpclattice.py @@ -309,6 +309,7 @@ class Service(AWSObject): "CertificateArn": (str, False), "CustomDomainName": (str, False), "DnsEntry": (DnsEntry, False), + "IdleTimeoutSeconds": (integer, False), "Name": (str, False), "Tags": (Tags, False), } diff --git a/troposphere/workspaces.py b/troposphere/workspaces.py index 36b132e12..ab34fe0b2 100644 --- a/troposphere/workspaces.py +++ b/troposphere/workspaces.py @@ -56,6 +56,32 @@ class Workspace(AWSObject): } +class IpRuleItem(AWSProperty): + """ + `IpRuleItem `__ + """ + + props: PropsDictType = { + "IpRule": (str, True), + "RuleDesc": (str, False), + } + + +class WorkspaceIpGroup(AWSObject): + """ + `WorkspaceIpGroup `__ + """ + + resource_type = "AWS::WorkSpaces::WorkspaceIpGroup" + + props: PropsDictType = { + "GroupDesc": (str, False), + "GroupName": (str, True), + "Tags": (Tags, False), + "UserRules": ([IpRuleItem], False), + } + + class ApplicationSettings(AWSProperty): """ `ApplicationSettings `__