diff --git a/troposphere/b2bi.py b/troposphere/b2bi.py index 857c1826d..3f4012bac 100644 --- a/troposphere/b2bi.py +++ b/troposphere/b2bi.py @@ -7,6 +7,7 @@ from . import AWSObject, AWSProperty, PropsDictType, Tags +from .validators import boolean class X12Details(AWSProperty): @@ -22,7 +23,7 @@ class X12Details(AWSProperty): class EdiType(AWSProperty): """ - `EdiType `__ + `EdiType `__ """ props: PropsDictType = { @@ -47,6 +48,7 @@ class EdiConfiguration(AWSProperty): """ props: PropsDictType = { + "CapabilityDirection": (str, False), "InputLocation": (S3Location, True), "OutputLocation": (S3Location, True), "TransformerId": (str, True), @@ -80,6 +82,89 @@ class Capability(AWSObject): } +class X12Delimiters(AWSProperty): + """ + `X12Delimiters `__ + """ + + props: PropsDictType = { + "ComponentSeparator": (str, False), + "DataElementSeparator": (str, False), + "SegmentTerminator": (str, False), + } + + +class X12FunctionalGroupHeaders(AWSProperty): + """ + `X12FunctionalGroupHeaders `__ + """ + + props: PropsDictType = { + "ApplicationReceiverCode": (str, False), + "ApplicationSenderCode": (str, False), + "ResponsibleAgencyCode": (str, False), + } + + +class X12InterchangeControlHeaders(AWSProperty): + """ + `X12InterchangeControlHeaders `__ + """ + + props: PropsDictType = { + "AcknowledgmentRequestedCode": (str, False), + "ReceiverId": (str, False), + "ReceiverIdQualifier": (str, False), + "RepetitionSeparator": (str, False), + "SenderId": (str, False), + "SenderIdQualifier": (str, False), + "UsageIndicatorCode": (str, False), + } + + +class X12OutboundEdiHeaders(AWSProperty): + """ + `X12OutboundEdiHeaders `__ + """ + + props: PropsDictType = { + "Delimiters": (X12Delimiters, False), + "FunctionalGroupHeaders": (X12FunctionalGroupHeaders, False), + "InterchangeControlHeaders": (X12InterchangeControlHeaders, False), + "ValidateEdi": (boolean, False), + } + + +class X12Envelope(AWSProperty): + """ + `X12Envelope `__ + """ + + props: PropsDictType = { + "Common": (X12OutboundEdiHeaders, False), + } + + +class OutboundEdiOptions(AWSProperty): + """ + `OutboundEdiOptions `__ + """ + + props: PropsDictType = { + "X12": (X12Envelope, True), + } + + +class CapabilityOptions(AWSProperty): + """ + `CapabilityOptions `__ + """ + + props: PropsDictType = { + "OutboundEdi": (OutboundEdiOptions, False), + } + + class Partnership(AWSObject): """ `Partnership `__ @@ -88,7 +173,8 @@ class Partnership(AWSObject): resource_type = "AWS::B2BI::Partnership" props: PropsDictType = { - "Capabilities": ([str], False), + "Capabilities": ([str], True), + "CapabilityOptions": (CapabilityOptions, False), "Email": (str, True), "Name": (str, True), "Phone": (str, False), @@ -114,6 +200,71 @@ class Profile(AWSObject): } +class FormatOptions(AWSProperty): + """ + `FormatOptions `__ + """ + + props: PropsDictType = { + "X12": (X12Details, True), + } + + +class InputConversion(AWSProperty): + """ + `InputConversion `__ + """ + + props: PropsDictType = { + "FormatOptions": (FormatOptions, False), + "FromFormat": (str, True), + } + + +class Mapping(AWSProperty): + """ + `Mapping `__ + """ + + props: PropsDictType = { + "Template": (str, False), + "TemplateLanguage": (str, True), + } + + +class OutputConversion(AWSProperty): + """ + `OutputConversion `__ + """ + + props: PropsDictType = { + "FormatOptions": (FormatOptions, False), + "ToFormat": (str, True), + } + + +class SampleDocumentKeys(AWSProperty): + """ + `SampleDocumentKeys `__ + """ + + props: PropsDictType = { + "Input": (str, False), + "Output": (str, False), + } + + +class SampleDocuments(AWSProperty): + """ + `SampleDocuments `__ + """ + + props: PropsDictType = { + "BucketName": (str, True), + "Keys": ([SampleDocumentKeys], True), + } + + class Transformer(AWSObject): """ `Transformer `__ @@ -122,11 +273,11 @@ class Transformer(AWSObject): resource_type = "AWS::B2BI::Transformer" props: PropsDictType = { - "EdiType": (EdiType, True), - "FileFormat": (str, True), - "MappingTemplate": (str, True), + "InputConversion": (InputConversion, False), + "Mapping": (Mapping, False), "Name": (str, True), - "SampleDocument": (str, False), + "OutputConversion": (OutputConversion, False), + "SampleDocuments": (SampleDocuments, False), "Status": (str, True), "Tags": (Tags, False), } diff --git a/troposphere/cloudformation.py b/troposphere/cloudformation.py index cb9cf18b3..ea1a72211 100644 --- a/troposphere/cloudformation.py +++ b/troposphere/cloudformation.py @@ -31,6 +31,7 @@ class CustomResource(AWSObject): resource_type = "AWS::CloudFormation::CustomResource" props: PropsDictType = { + "ServiceTimeout": (integer, False), "ServiceToken": (str, True), } diff --git a/troposphere/dms.py b/troposphere/dms.py index dd77646f9..b4a01c554 100644 --- a/troposphere/dms.py +++ b/troposphere/dms.py @@ -630,6 +630,7 @@ class ReplicationInstance(AWSObject): "EngineVersion": (str, False), "KmsKeyId": (str, False), "MultiAZ": (boolean, False), + "NetworkType": (str, False), "PreferredMaintenanceWindow": (str, False), "PubliclyAccessible": (boolean, False), "ReplicationInstanceClass": (str, True), diff --git a/troposphere/emr.py b/troposphere/emr.py index dc9e95ff9..f7fa22f9a 100644 --- a/troposphere/emr.py +++ b/troposphere/emr.py @@ -84,6 +84,18 @@ class Configuration(AWSProperty): } +class OnDemandCapacityReservationOptions(AWSProperty): + """ + `OnDemandCapacityReservationOptions `__ + """ + + props: PropsDictType = { + "CapacityReservationPreference": (str, False), + "CapacityReservationResourceGroupArn": (str, False), + "UsageStrategy": (str, False), + } + + class OnDemandProvisioningSpecification(AWSProperty): """ `OnDemandProvisioningSpecification `__ @@ -91,6 +103,7 @@ class OnDemandProvisioningSpecification(AWSProperty): props: PropsDictType = { "AllocationStrategy": (str, True), + "CapacityReservationOptions": (OnDemandCapacityReservationOptions, False), } def validate(self): @@ -124,6 +137,40 @@ class InstanceFleetProvisioningSpecifications(AWSProperty): } +class OnDemandResizingSpecification(AWSProperty): + """ + `OnDemandResizingSpecification `__ + """ + + props: PropsDictType = { + "AllocationStrategy": (str, False), + "CapacityReservationOptions": (OnDemandCapacityReservationOptions, False), + "TimeoutDurationMinutes": (integer, False), + } + + +class SpotResizingSpecification(AWSProperty): + """ + `SpotResizingSpecification `__ + """ + + props: PropsDictType = { + "AllocationStrategy": (str, False), + "TimeoutDurationMinutes": (integer, False), + } + + +class InstanceFleetResizingSpecifications(AWSProperty): + """ + `InstanceFleetResizingSpecifications `__ + """ + + props: PropsDictType = { + "OnDemandResizeSpecification": (OnDemandResizingSpecification, False), + "SpotResizeSpecification": (SpotResizingSpecification, False), + } + + class VolumeSpecification(AWSProperty): """ `VolumeSpecification `__ @@ -171,6 +218,7 @@ class InstanceTypeConfig(AWSProperty): "CustomAmiId": (str, False), "EbsConfiguration": (EbsConfiguration, False), "InstanceType": (str, True), + "Priority": (double, False), "WeightedCapacity": (integer, False), } @@ -184,6 +232,7 @@ class InstanceFleetConfigProperty(AWSProperty): "InstanceTypeConfigs": ([InstanceTypeConfig], False), "LaunchSpecifications": (InstanceFleetProvisioningSpecifications, False), "Name": (str, False), + "ResizeSpecifications": (InstanceFleetResizingSpecifications, False), "TargetOnDemandCapacity": (integer, False), "TargetSpotCapacity": (integer, False), } @@ -460,6 +509,7 @@ class InstanceFleetConfig(AWSObject): "InstanceTypeConfigs": ([InstanceTypeConfig], False), "LaunchSpecifications": (InstanceFleetProvisioningSpecifications, False), "Name": (str, False), + "ResizeSpecifications": (InstanceFleetResizingSpecifications, False), "TargetOnDemandCapacity": (integer, False), "TargetSpotCapacity": (integer, False), } diff --git a/troposphere/glue.py b/troposphere/glue.py index 7420d37c4..1d6828d9a 100644 --- a/troposphere/glue.py +++ b/troposphere/glue.py @@ -549,6 +549,7 @@ class Job(AWSObject): "ExecutionProperty": (ExecutionProperty, False), "GlueVersion": (str, False), "JobMode": (str, False), + "JobRunQueuingEnabled": (boolean, False), "LogUri": (str, False), "MaintenanceWindow": (str, False), "MaxCapacity": (double, False), @@ -1098,6 +1099,45 @@ class Trigger(AWSObject): } +class ConfigurationObject(AWSProperty): + """ + `ConfigurationObject `__ + """ + + props: PropsDictType = { + "AllowedValues": ([str], False), + "DefaultValue": (str, False), + "MaxValue": (str, False), + "MinValue": (str, False), + } + + +class ProfileConfiguration(AWSProperty): + """ + `ProfileConfiguration `__ + """ + + props: PropsDictType = { + "JobConfiguration": (dict, False), + "SessionConfiguration": (dict, False), + } + + +class UsageProfile(AWSObject): + """ + `UsageProfile `__ + """ + + resource_type = "AWS::Glue::UsageProfile" + + props: PropsDictType = { + "Configuration": (ProfileConfiguration, False), + "Description": (str, False), + "Name": (str, True), + "Tags": (Tags, False), + } + + class Workflow(AWSObject): """ `Workflow `__ diff --git a/troposphere/iot.py b/troposphere/iot.py index c51617aeb..5d3085837 100644 --- a/troposphere/iot.py +++ b/troposphere/iot.py @@ -244,6 +244,16 @@ class AuthorizerConfig(AWSProperty): } +class ClientCertificateConfig(AWSProperty): + """ + `ClientCertificateConfig `__ + """ + + props: PropsDictType = { + "ClientCertificateCallbackArn": (str, False), + } + + class ServerCertificateConfig(AWSProperty): """ `ServerCertificateConfig `__ @@ -272,7 +282,10 @@ class DomainConfiguration(AWSObject): resource_type = "AWS::IoT::DomainConfiguration" props: PropsDictType = { + "ApplicationProtocol": (str, False), + "AuthenticationType": (str, False), "AuthorizerConfig": (AuthorizerConfig, False), + "ClientCertificateConfig": (ClientCertificateConfig, False), "DomainConfigurationName": (str, False), "DomainConfigurationStatus": (str, False), "DomainName": (str, False), diff --git a/troposphere/kinesis.py b/troposphere/kinesis.py index 8b3a65afe..be9e9ac3b 100644 --- a/troposphere/kinesis.py +++ b/troposphere/kinesis.py @@ -11,6 +11,19 @@ from .validators.kinesis import kinesis_stream_mode, validate_tags_or_list +class ResourcePolicy(AWSObject): + """ + `ResourcePolicy `__ + """ + + resource_type = "AWS::Kinesis::ResourcePolicy" + + props: PropsDictType = { + "ResourceArn": (str, True), + "ResourcePolicy": (dict, True), + } + + class StreamEncryption(AWSProperty): """ `StreamEncryption `__ diff --git a/troposphere/networkfirewall.py b/troposphere/networkfirewall.py index cce803d76..bcb11e8b3 100644 --- a/troposphere/networkfirewall.py +++ b/troposphere/networkfirewall.py @@ -103,12 +103,23 @@ class PolicyVariables(AWSProperty): } +class FlowTimeouts(AWSProperty): + """ + `FlowTimeouts `__ + """ + + props: PropsDictType = { + "TcpIdleTimeoutSeconds": (integer, False), + } + + class StatefulEngineOptions(AWSProperty): """ `StatefulEngineOptions `__ """ props: PropsDictType = { + "FlowTimeouts": (FlowTimeouts, False), "RuleOrder": (str, False), "StreamExceptionPolicy": (str, False), } diff --git a/troposphere/quicksight.py b/troposphere/quicksight.py index bbabd4e4a..34b677494 100644 --- a/troposphere/quicksight.py +++ b/troposphere/quicksight.py @@ -532,6 +532,7 @@ class DefaultDateTimePickerControlOptions(AWSProperty): """ props: PropsDictType = { + "CommitMode": (str, False), "DisplayOptions": (DateTimePickerControlDisplayOptions, False), "Type": (str, False), } @@ -575,6 +576,7 @@ class DefaultFilterDropDownControlOptions(AWSProperty): """ props: PropsDictType = { + "CommitMode": (str, False), "DisplayOptions": (DropDownControlDisplayOptions, False), "SelectableValues": (FilterSelectableValues, False), "Type": (str, False), @@ -634,6 +636,7 @@ class DefaultRelativeDateTimeControlOptions(AWSProperty): """ props: PropsDictType = { + "CommitMode": (str, False), "DisplayOptions": (RelativeDateTimeControlDisplayOptions, False), } @@ -1312,6 +1315,7 @@ class FilterDateTimePickerControl(AWSProperty): """ props: PropsDictType = { + "CommitMode": (str, False), "DisplayOptions": (DateTimePickerControlDisplayOptions, False), "FilterControlId": (str, True), "SourceFilterId": (str, True), @@ -1327,6 +1331,7 @@ class FilterDropDownControl(AWSProperty): props: PropsDictType = { "CascadingControlConfiguration": (CascadingControlConfiguration, False), + "CommitMode": (str, False), "DisplayOptions": (DropDownControlDisplayOptions, False), "FilterControlId": (str, True), "SelectableValues": (FilterSelectableValues, False), @@ -1358,6 +1363,7 @@ class FilterRelativeDateTimeControl(AWSProperty): """ props: PropsDictType = { + "CommitMode": (str, False), "DisplayOptions": (RelativeDateTimeControlDisplayOptions, False), "FilterControlId": (str, True), "SourceFilterId": (str, True), @@ -1689,6 +1695,7 @@ class ParameterDropDownControl(AWSProperty): props: PropsDictType = { "CascadingControlConfiguration": (CascadingControlConfiguration, False), + "CommitMode": (str, False), "DisplayOptions": (DropDownControlDisplayOptions, False), "ParameterControlId": (str, True), "SelectableValues": (ParameterSelectableValues, False), @@ -7233,6 +7240,25 @@ class DataSource(AWSObject): } +class Folder(AWSObject): + """ + `Folder `__ + """ + + resource_type = "AWS::QuickSight::Folder" + + props: PropsDictType = { + "AwsAccountId": (str, False), + "FolderId": (str, False), + "FolderType": (str, False), + "Name": (str, False), + "ParentFolderArn": (str, False), + "Permissions": ([ResourcePermission], False), + "SharingModel": (str, False), + "Tags": (Tags, False), + } + + class RefreshOnDay(AWSProperty): """ `RefreshOnDay `__ diff --git a/troposphere/s3.py b/troposphere/s3.py index 5473a423d..9289dc80f 100644 --- a/troposphere/s3.py +++ b/troposphere/s3.py @@ -376,6 +376,7 @@ class LifecycleConfiguration(AWSProperty): props: PropsDictType = { "Rules": ([LifecycleRule], True), + "TransitionDefaultMinimumObjectSize": (str, False), } diff --git a/troposphere/s3express.py b/troposphere/s3express.py index 9daf7e272..d5086ee00 100644 --- a/troposphere/s3express.py +++ b/troposphere/s3express.py @@ -6,7 +6,8 @@ # *** Do not modify - this file is autogenerated *** -from . import AWSObject, PropsDictType +from . import AWSObject, AWSProperty, PropsDictType +from .validators import boolean class BucketPolicy(AWSObject): @@ -22,6 +23,38 @@ class BucketPolicy(AWSObject): } +class ServerSideEncryptionByDefault(AWSProperty): + """ + `ServerSideEncryptionByDefault `__ + """ + + props: PropsDictType = { + "KMSMasterKeyID": (str, False), + "SSEAlgorithm": (str, True), + } + + +class ServerSideEncryptionRule(AWSProperty): + """ + `ServerSideEncryptionRule `__ + """ + + props: PropsDictType = { + "BucketKeyEnabled": (boolean, False), + "ServerSideEncryptionByDefault": (ServerSideEncryptionByDefault, False), + } + + +class BucketEncryption(AWSProperty): + """ + `BucketEncryption `__ + """ + + props: PropsDictType = { + "ServerSideEncryptionConfiguration": ([ServerSideEncryptionRule], True), + } + + class DirectoryBucket(AWSObject): """ `DirectoryBucket `__ @@ -30,7 +63,7 @@ class DirectoryBucket(AWSObject): resource_type = "AWS::S3Express::DirectoryBucket" props: PropsDictType = { - "BucketEncryption": (dict, False), + "BucketEncryption": (BucketEncryption, False), "BucketName": (str, False), "DataRedundancy": (str, True), "LocationName": (str, True),