internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: cloudtools/troposphere

Issue:
Tags of mixed type cannot be used on python 3
```
troyready $ python3
Python 3.6.6 (default, Sep 12 2018, 18:26:19) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from troposphere import Sub, Tags
>>> Tags({Sub('mystringtosub'): 'val', 'foo': 'bar'}).to_dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/troyready/.local/lib/python3.6/site-packages/troposphere/__init__.py", line 534, in __init__
    for k, v in sorted(tag_dict.items()):
TypeError: '<' not supported between instances of 'str' and 'Sub'
```
This works properly still on python 2:
```
troyready $ python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from troposphere import Sub, Tags
>>> Tags({Sub('mystringtosub'): 'val', 'foo': 'bar'}).to_dict()
[{'Key': {'Fn::Sub': 'mystringtosub'}, 'Value': 'val'}, {'Key': 'foo', 'Value': 'bar'}]

```


Discussion:
Sorry for the delay in responding to this issue. I'm thinking a check to sort only if all the keys are strings. Alternatively pull out all the non-string keys and sort the remaining. Thoughts?

Resolving patch:
diff --git a/troposphere/__init__.py b/troposphere/__init__.py
--- a/troposphere/__init__.py
+++ b/troposphere/__init__.py
@@ -537,7 +537,9 @@ def __init__(self, *args, **kwargs):
             tag_dict = args[0]
 
         self.tags = []
-        for k, v in sorted(tag_dict.iteritems()):
+        for k, v in (sorted(tag_dict.items())
+                     if all(isinstance(k, str) for k in tag_dict)
+                     else tag_dict.items()):
             self.tags.append({
                 'Key': k,
                 'Value': v,


Test patch:
diff --git a/tests/test_tags.py b/tests/test_tags.py
--- a/tests/test_tags.py
+++ b/tests/test_tags.py
@@ -1,5 +1,5 @@
 import unittest
-from troposphere import Tags
+from troposphere import Sub, Tags
 from troposphere.autoscaling import Tags as ASTags
 
 
@@ -26,6 +26,11 @@ def test_ASTagAddition(self):
         ]
         self.assertEqual(tags.to_dict(), result)
 
+    def test_Unsortable(self):
+        result = [{'Key': {'Fn::Sub': 'somestring'}, 'Value': 'val'}]
+        tags = Tags({Sub('somestring'): 'val'})
+        self.assertEqual(tags.to_dict(), result)
+
     def test_Formats(self):
         result = [
             {'Value': 'bar', 'Key': 'bar'},
Repository: cloudtools/troposphere

Issue:
Support For Conditional Tagging
With CloudFormation you can do something like this:

```
"Tags": [
  ...,
  {
    "Fn::If": [
      "MyCondition",
      {"Key": "MyKey", "Value": "MyValue"},
      {"Ref": "AWS::NoValue"}
    ]
  }
],
```

To support conditional tags. Unfortunately due to type checking of the tag class this isn't something that's possible. Possibly related to #668 ?


Discussion:

Resolving patch:
diff --git a/troposphere/__init__.py b/troposphere/__init__.py
--- a/troposphere/__init__.py
+++ b/troposphere/__init__.py
@@ -525,25 +525,33 @@ def __init__(self, data):
         self.data = {'Fn::ImportValue': data}
 
 
+class Tag(AWSHelperFn):
+    def __init__(self, k, v):
+        self.data = {'Key': k, 'Value': v, }
+
+
 class Tags(AWSHelperFn):
     def __init__(self, *args, **kwargs):
+        self.tags = []
         if not args:
             # Assume kwargs variant
             tag_dict = kwargs
         else:
-            if len(args) != 1:
-                raise(TypeError, "Multiple non-kwargs passed to Tags")
-
-            # Validate single argument passed in is a dict
-            if not isinstance(args[0], dict):
-                raise(TypeError, "Tags needs to be either kwargs or dict")
-            tag_dict = args[0]
+            tag_dict = {}
+            for arg in args:
+                # Validate argument passed in is an AWSHelperFn or...
+                if isinstance(arg, AWSHelperFn):
+                    self.tags.append(arg)
+                # Validate argument passed in is a dict
+                elif isinstance(arg, dict):
+                    tag_dict.update(arg)
+                else:
+                    raise(TypeError, "Tags needs to be either kwargs, "
+                                     "dict, or AWSHelperFn")
 
         def add_tag(tag_list, k, v):
             tag_list.append({'Key': k, 'Value': v, })
 
-        self.tags = []
-
         # Detect and handle non-string Tag items which do not sort in Python3
         if all(isinstance(k, basestring) for k in tag_dict):
             for k, v in sorted(tag_dict.items()):


Test patch:
diff --git a/tests/test_tags.py b/tests/test_tags.py
--- a/tests/test_tags.py
+++ b/tests/test_tags.py
@@ -1,5 +1,5 @@
 import unittest
-from troposphere import Sub, Tags
+from troposphere import If, Sub, Tag, Tags
 from troposphere.autoscaling import Tags as ASTags
 
 
@@ -15,6 +15,19 @@ def test_TagAddition(self):
         ]
         self.assertEqual(tags.to_dict(), result)
 
+    def test_TagConditional(self):
+        tags = Tags(
+            {'foo': 'foo'},
+            If('MyCondition', Tag('bar', 'bar'), Tag('baz', 'baz'))
+        )
+        result = [
+            {"Fn::If": ["MyCondition",
+                        {"Key": "bar", "Value": "bar"},
+                        {"Key": "baz", "Value": "baz"}]},
+            {'Value': 'foo', 'Key': 'foo'},
+        ]
+        self.assertEqual(tags.to_dict(), result)
+
     def test_ASTagAddition(self):
         tags = ASTags(foo=('fooval', True))
         tags += ASTags(bar=('barval', False))
Repository: cloudtools/troposphere

Issue:
LaunchTemplateData BlockDeviceMappings requires different data type for NoDevice than EC2 instance
The BlockDeviceMapping object for an EC2 instance requires that `NoDevice` resolve to a NoDevice object, or a simple dictionary in terms of object validation:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html

However, in the case of LaunchTemplateData for launch templates, BlockDeviceMapping requires that `NoDevice` resolve to a string type:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html

The current setup works for EC2 instances but not Launch Templates, due to both mapping to the same object.


Discussion:

Resolving patch:
diff --git a/troposphere/ec2.py b/troposphere/ec2.py
--- a/troposphere/ec2.py
+++ b/troposphere/ec2.py
@@ -138,8 +138,17 @@ class BlockDeviceMapping(AWSProperty):
     props = {
         'DeviceName': (basestring, True),
         'Ebs': (EBSBlockDevice, False),  # Conditional
-        'NoDevice': (dict, False),
         'VirtualName': (basestring, False),  # Conditional
+        'NoDevice': (dict, False)
+    }
+
+
+class LaunchTemplateBlockDeviceMapping(AWSProperty):
+    props = {
+        'DeviceName': (basestring, True),
+        'Ebs': (EBSBlockDevice, False),  # Conditional
+        'VirtualName': (basestring, False),  # Conditional
+        'NoDevice': (basestring, False)
     }
 
 
@@ -975,7 +984,7 @@ class LaunchTemplateCreditSpecification(AWSProperty):
 
 class LaunchTemplateData(AWSProperty):
     props = {
-        'BlockDeviceMappings': ([BlockDeviceMapping], False),
+        'BlockDeviceMappings': ([LaunchTemplateBlockDeviceMapping], False),
         'CpuOptions': (CpuOptions, False),
         'CreditSpecification': (LaunchTemplateCreditSpecification, False),
         'DisableApiTermination': (boolean, False),


Test patch:
Repository: cloudtools/troposphere

Issue:
Add ca certificate identity to RDS
AWS has announced that the CA cert will expire in 2020 forcing us to update our stacks. As far as I can tell, this option doesn't exist in the troposphere API.

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html


Discussion:
+1

additional information can be found [here](https://github.com/aws-cloudformation/aws-cloudformation-coverage-roadmap/issues/211#issuecomment-570726064).

At the moment, the [DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-cacertificateidentifier) documentation has not been updated to include the new property.

Resolving patch:
diff --git a/troposphere/rds.py b/troposphere/rds.py
--- a/troposphere/rds.py
+++ b/troposphere/rds.py
@@ -172,6 +172,7 @@ class DBInstance(AWSObject):
         'AutoMinorVersionUpgrade': (boolean, False),
         'AvailabilityZone': (basestring, False),
         'BackupRetentionPeriod': (validate_backup_retention_period, False),
+        'CACertificateIdentifier': (basestring, False),
         'CharacterSetName': (basestring, False),
         'CopyTagsToSnapshot': (boolean, False),
         'DBClusterIdentifier': (basestring, False),


Test patch:
Repository: cloudtools/troposphere

Issue:
Add support for DataLocationResource & TableWithColumnsResource in AWS::LakeFormation::Permissions (2020, Jan 16 update)
waiting for the doc to be updated


Discussion:
While these have made it into some CloudFormation Resource Specifications, they still haven't made it into the [`us-east-1` Resource Specification](https://d1uauaxba7bl26.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json) yet:

https://github.com/ScriptAutomate/aws-cfn-resource-specs/blob/master/CHANGELOG.md

Both the documentation and Troposphere (and many similar tools like the [CDK](https://github.com/aws/aws-cdk)) use the [`us-east-1` Resource Specification](https://d1uauaxba7bl26.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json) because it usually has every type:

![resources-per-region](https://user-images.githubusercontent.com/7014355/72749761-c2925500-3b6f-11ea-94e0-0c8e877eb24b.png)


Resolving patch:
diff --git a/troposphere/lakeformation.py b/troposphere/lakeformation.py
--- a/troposphere/lakeformation.py
+++ b/troposphere/lakeformation.py
@@ -43,10 +43,33 @@ class TableResource(AWSProperty):
     }
 
 
+class DataLocationResource(AWSProperty):
+    props = {
+        'S3Resource': (basestring, False),
+    }
+
+
+class ColumnWildcard(AWSProperty):
+    props = {
+        'ExcludedColumnNames': ([basestring], False),
+    }
+
+
+class TableWithColumnsResource(AWSProperty):
+    props = {
+        'ColumnNames': ([basestring], False),
+        'ColumnWildcard': (ColumnWildcard, False),
+        'DatabaseName': (basestring, False),
+        'Name': (basestring, False),
+    }
+
+
 class Resource(AWSProperty):
     props = {
         'DatabaseResource': (DatabaseResource, False),
+        'DataLocationResource': (DataLocationResource, False),
         'TableResource': (TableResource, False),
+        'TableWithColumnsResource': (TableWithColumnsResource, False),
     }
 
 


Test patch:
Repository: cloudtools/troposphere

Issue:
wafv2.py IPSet - Error with Addresses property
First of all, thanks to everyone who maintains this repo - Troposphere is a Great tool!  

In the master branch, I came across a problem with wafv2.py when creating an IPSet.  It generates the Addresses property with the IPAddresses property which includes a list of CIDRs; however, it should produce only the list of CIDRs as values of Addresses (without IPAddresses).

Current (incorrect):
        Addresses:
          IPAddresses:
          - 1.2.3.0/24
          - 2.3.0.0/16

Correct:
        Addresses:
          - 1.2.3.0/24
          - 2.3.0.0/16




Discussion:
Hi @johnsarg . To me the documentation contradicts itself. The example shows the Adresses property as a list of strings ( https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html#aws-resource-wafv2-ipset--examples) , but the object's description describes the IPAddresses property.

Have you had the chance to test the actual cloudformation behavior ?

Resolving patch:
diff --git a/troposphere/wafv2.py b/troposphere/wafv2.py
--- a/troposphere/wafv2.py
+++ b/troposphere/wafv2.py
@@ -410,17 +410,11 @@ class WebACL(AWSObject):
     }
 
 
-class IPAddresses(AWSProperty):
-    props = {
-        'IPAddresses': ([basestring], False)
-    }
-
-
 class IPSet(AWSObject):
     resource_type = "AWS::WAFv2::IPSet"
 
     props = {
-        'Addresses': (IPAddresses, False),
+        'Addresses': ([basestring], False),
         'Description': (basestring, False),
         'IPAddressVersion': (validate_ipaddress_version, False),
         'Name': (basestring, True),


Test patch:
Repository: cloudtools/troposphere

Issue:
Security Hub tags not formatted correctly
Using the following code for a Security Hub resource results in tags that don't follow the structure of Security Hub Cloudformation:

```
hub = tpl.add_resource(Hub(
        title="ExampleHub",
        Tags=Tags(
            Tag("Test", "Test value")
        )
    ))
```

The resulting CF template is as follows:
```
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Security Hub configuration",
    "Resources": {
        "ExampleHub": {
            "Properties": {
                "Tags": [
                    {
                        "Key": "Test",
                        "Value": "Test value"
                    }
                ]
            },
            "Type": "AWS::SecurityHub::Hub"
        }
    }
}
```

Looking into the CF documentation for security hub, it looks as though the tag JSON is different:
```
{
    "Description": "Example Hub with Tags",
    "Resources": {
        "ExampleHubWithTags": {
            "Type": "AWS::SecurityHub::Hub",
            "Properties": {
                "Tags": {
                    "key1": "value1",
                    "key2": "value2"
                }
            }
        }
    }
}
```

Trying to apply the changeset from the generated TF template results in error `Property validation failure: [Value of property {/Tags} does not match type {Map}]`.


Discussion:

Resolving patch:
diff --git a/troposphere/securityhub.py b/troposphere/securityhub.py
--- a/troposphere/securityhub.py
+++ b/troposphere/securityhub.py
@@ -8,12 +8,12 @@
 
 
 from . import AWSObject
-from troposphere import Tags
+from .validators import json_checker
 
 
 class Hub(AWSObject):
     resource_type = "AWS::SecurityHub::Hub"
 
     props = {
-        'Tags': (Tags, False),
+        'Tags': (json_checker, False),
     }


Test patch:
Repository: cloudtools/troposphere

Issue:
ApiGatewayV2 is missing VpcLink
We appear to be unable to create an HTTP Vpc Link, as the ApiGatewayV2 Vpc Link is not yet implemented.

From the AWS documentation:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-vpclink.html

From the Troposphere codebase, VpcLink is missing.

https://github.com/cloudtools/troposphere/blob/master/troposphere/apigatewayv2.py

Please note that this is not the same thing as the ApiGateway VpcLink, as that does not support Http Vpc Links.


Discussion:

Resolving patch:
diff --git a/troposphere/apigatewayv2.py b/troposphere/apigatewayv2.py
--- a/troposphere/apigatewayv2.py
+++ b/troposphere/apigatewayv2.py
@@ -333,3 +333,14 @@ class Stage(AWSObject):
         'StageVariables': (dict, False),
         'Tags': (dict, False),
     }
+
+
+class VpcLink(AWSObject):
+    resource_type = "AWS::ApiGatewayV2::VpcLink"
+
+    props = {
+        'Name': (basestring, True),
+        'SecurityGroupIds': ([basestring], False),
+        'SubnetIds': ([basestring], True),
+        'Tags': (dict, False),
+    }


Test patch:
Repository: cloudtools/troposphere

Issue:
implement AWS::CodeStarConnections changes from May 14, 2020 update



Discussion:

Resolving patch:
diff --git a/troposphere/codestarconnections.py b/troposphere/codestarconnections.py
--- a/troposphere/codestarconnections.py
+++ b/troposphere/codestarconnections.py
@@ -4,7 +4,7 @@
 # See LICENSE file for full license.
 
 
-from . import AWSObject
+from . import AWSObject, Tags
 
 
 VALID_CONNECTION_PROVIDERTYPE = ('Bitbucket')
@@ -25,4 +25,5 @@ class Connection(AWSObject):
     props = {
         'ConnectionName': (basestring, True),
         'ProviderType': (validate_connection_providertype, True),
+        'Tags': (Tags, False),
     }


Test patch:
Repository: cloudtools/troposphere

Issue:
implement AWS::DMS changes from May 14, 2020 update



Discussion:

Resolving patch:
diff --git a/troposphere/dms.py b/troposphere/dms.py
--- a/troposphere/dms.py
+++ b/troposphere/dms.py
@@ -80,6 +80,18 @@ class KafkaSettings(AWSProperty):
     }
 
 
+class NeptuneSettings(AWSProperty):
+    props = {
+        'ErrorRetryDuration': (integer, False),
+        'IamAuthEnabled': (boolean, False),
+        'MaxFileSize': (integer, False),
+        'MaxRetryCount': (integer, False),
+        'S3BucketFolder': (basestring, False),
+        'S3BucketName': (basestring, False),
+        'ServiceAccessRoleArn': (basestring, False),
+    }
+
+
 class Endpoint(AWSObject):
     resource_type = "AWS::DMS::Endpoint"
 
@@ -96,6 +108,7 @@ class Endpoint(AWSObject):
         'KinesisSettings': (KinesisSettings, False),
         'KmsKeyId': (basestring, False),
         'MongoDbSettings': (MongoDbSettings, False),
+        'NeptuneSettings': (NeptuneSettings, False),
         'Password': (basestring, False),
         'Port': (network_port, False),
         'S3Settings': (S3Settings, False),
@@ -167,4 +180,5 @@ class ReplicationTask(AWSObject):
         'TableMappings': (basestring, True),
         'Tags': (Tags, False),
         'TargetEndpointArn': (basestring, True),
+        'TaskData': (basestring, True),
     }


Test patch:
Repository: cloudtools/troposphere

Issue:
implement AWS::MediaStore changes from May 14, 2020 update



Discussion:

Resolving patch:
diff --git a/troposphere/mediastore.py b/troposphere/mediastore.py
--- a/troposphere/mediastore.py
+++ b/troposphere/mediastore.py
@@ -4,10 +4,10 @@
 # See LICENSE file for full license.
 
 
-from . import AWSObject
+from . import AWSObject, Tags
 from . import AWSProperty
 from .validators import boolean
-from .validators import integer
+from .validators import integer, containerlevelmetrics_status
 
 
 class CorsRule(AWSProperty):
@@ -20,6 +20,20 @@ class CorsRule(AWSProperty):
     }
 
 
+class MetricPolicyRule(AWSProperty):
+    props = {
+        'ObjectGroup': (basestring, True),
+        'ObjectGroupName': (basestring, True),
+    }
+
+
+class MetricPolicy(AWSProperty):
+    props = {
+        'ContainerLevelMetrics': (containerlevelmetrics_status, True),
+        'MetricPolicyRules': ([MetricPolicyRule], False),
+    }
+
+
 class Container(AWSObject):
     resource_type = "AWS::MediaStore::Container"
 
@@ -28,5 +42,7 @@ class Container(AWSObject):
         'ContainerName': (basestring, True),
         'CorsPolicy': ([CorsRule], False),
         'LifecyclePolicy': (basestring, False),
+        'MetricPolicy': (MetricPolicy, False),
         'Policy': (basestring, False),
+        'Tags': (Tags, False),
     }
diff --git a/troposphere/validators.py b/troposphere/validators.py
--- a/troposphere/validators.py
+++ b/troposphere/validators.py
@@ -591,3 +591,14 @@ def ebsinstanceblockdevicespecification_volume_type(type):
             )
         )
     return type
+
+
+def containerlevelmetrics_status(status):
+    valid_status = ['DISABLED', 'ENABLED']
+    if status not in valid_status:
+        raise ValueError(
+            'ContainerLevelMetrics must be one of: "%s"' % (
+                ', '.join(valid_status)
+            )
+        )
+    return status


Test patch:
Repository: cloudtools/troposphere

Issue:
implement AWS::ServiceCatalog changes from May 14, 2020 update



Discussion:

Resolving patch:
diff --git a/troposphere/servicecatalog.py b/troposphere/servicecatalog.py
--- a/troposphere/servicecatalog.py
+++ b/troposphere/servicecatalog.py
@@ -36,6 +36,7 @@ class CloudFormationProduct(AWSObject):
         'Owner': (basestring, True),
         'ProvisioningArtifactParameters':
             ([ProvisioningArtifactProperties], True),
+        'ReplaceProvisioningArtifacts': (boolean, False),
         'SupportDescription': (basestring, False),
         'SupportEmail': (basestring, False),
         'SupportUrl': (basestring, False),


Test patch:
Repository: cloudtools/troposphere

Issue:
implement AWS::Synthetics changes from May 14, 2020 update



Discussion:

Resolving patch:
diff --git a/troposphere/synthetics.py b/troposphere/synthetics.py
--- a/troposphere/synthetics.py
+++ b/troposphere/synthetics.py
@@ -47,7 +47,7 @@ class Canary(AWSObject):
         'ExecutionRoleArn': (basestring, True),
         'FailureRetentionPeriod': (integer, False),
         'Name': (basestring, True),
-        'RunConfig': (RunConfig, False),
+        'RunConfig': (RunConfig, True),
         'RuntimeVersion': (canary_runtime_version, True),
         'Schedule': (Schedule, True),
         'StartCanaryAfterCreation': (boolean, True),


Test patch:
Repository: cloudtools/troposphere

Issue:
SageMaker Model ContainerDefinition object does not support attribute Mode
Setting a `Mode` attribute within the ContainerDefinition for both the `PrimaryContainer` and `Containers` attributes for creating a Model resources keeps throwing error - `AttributeError: ContainerDefinition object does not support attribute Mode`.

Within the latest cloudformation docs https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html the `Mode` attribute is supported.

Without this support, multiple models container(s) creates/updates cannot be configured.

Would you prefer I open a PR or can I wait if it won't take much.

Thanks.


Discussion:

Resolving patch:
diff --git a/troposphere/sagemaker.py b/troposphere/sagemaker.py
--- a/troposphere/sagemaker.py
+++ b/troposphere/sagemaker.py
@@ -59,6 +59,7 @@ class ContainerDefinition(AWSProperty):
     props = {
         'ContainerHostname': (basestring, False),
         'Environment': (dict, False),
+        'Mode': (basestring, False),
         'ModelDataUrl': (basestring, False),
         'Image': (basestring, True)
     }


Test patch:
Repository: cloudtools/troposphere

Issue:
Add AdvancedSecurityOptions property to AWS ElasticSearch Domain
**Description:**

AWS Elasticsearch now supports fine-grained access control with Cloudformation. Need to add AdvancedSecurityOptions and MasterUserOptions to AWS::Elasticsearch::Domain object to enable this new functionality. 

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-advancedsecurityoptions


Discussion:

Resolving patch:
diff --git a/troposphere/elasticsearch.py b/troposphere/elasticsearch.py
--- a/troposphere/elasticsearch.py
+++ b/troposphere/elasticsearch.py
@@ -81,8 +81,24 @@ class SnapshotOptions(AWSProperty):
 
 class VPCOptions(AWSProperty):
     props = {
-        "SecurityGroupIds": ([basestring], False),
-        "SubnetIds": ([basestring], False)
+        'SecurityGroupIds': ([basestring], False),
+        'SubnetIds': ([basestring], False)
+    }
+
+
+class MasterUserOptions(AWSProperty):
+    props = {
+        'MasterUserARN': (basestring, False),
+        'MasterUserName': (basestring, False),
+        'MasterUserPassword': (basestring, False),
+    }
+
+
+class AdvancedSecurityOptionsInput(AWSProperty):
+    props = {
+        'Enabled': (boolean, False),
+        'InternalUserDatabaseEnabled': (boolean, False),
+        'MasterUserOptions': (MasterUserOptions, False),
     }
 
 
@@ -92,6 +108,7 @@ class Domain(AWSObject):
     props = {
         'AccessPolicies': (policytypes, False),
         'AdvancedOptions': (dict, False),
+        'AdvancedSecurityOptions': (AdvancedSecurityOptionsInput, False),
         'CognitoOptions': (CognitoOptions, False),
         'DomainName': (basestring, False),
         'EBSOptions': (EBSOptions, False),


Test patch: