prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  S3ObjectVersion is spelled "SS3ObjectVersion" in the lambda Code object validation
  I just noticed [this](https://github.com/cloudtools/troposphere/blob/1f67fb140f5b94cf0f29213a7300bad3ea046a0f/troposphere/awslambda.py#L31) while I was reading through the code. I haven't run into problems as I haven't had to use this particular key, but it looks like something you might want to know about.
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `troposphere/awslambda.py`
  Content:
  ```
  1 from . import AWSObject, AWSProperty
  2 from .validators import positive_integer
  3 
  4 MEMORY_VALUES = [x for x in range(128, 1600, 64)]
  5 
  6 
  7 def validate_memory_size(memory_value):
  8     """ Validate memory size for Lambda Function
  9     :param memory_value: The memory size specified in the Function
  10     :return: The provided memory size if it is valid
  11     """
  12     memory_value = int(positive_integer(memory_value))
  13     if memory_value not in MEMORY_VALUES:
  14         raise ValueError("Lambda Function memory size must be one of:\n %s" %
  15                          ", ".join(str(mb) for mb in MEMORY_VALUES))
  16     return memory_value
  17 
  18 
  19 class Code(AWSProperty):
  20     props = {
  21         'S3Bucket': (basestring, False),
  22         'S3Key': (basestring, False),
  23         'S3ObjectVersion': (basestring, False),
  24         'ZipFile': (basestring, False)
  25     }
  26 
  27     def validate(self):
  28         zip_file = self.properties.get('ZipFile')
  29         s3_bucket = self.properties.get('S3Bucket')
  30         s3_key = self.properties.get('S3Key')
  31         s3_object_version = self.properties.get('SS3ObjectVersion')
  32 
  33         if zip_file and s3_bucket:
  34             raise ValueError("You can't specify both 'S3Bucket' and 'ZipFile'")
  35         if zip_file and s3_key:
  36             raise ValueError("You can't specify both 'S3Key' and 'ZipFile'")
  37         if zip_file and s3_object_version:
  38             raise ValueError(
  39                 "You can't specify both 'S3ObjectVersion' and 'ZipFile'"
  40             )
  41         if not zip_file and not (s3_bucket and s3_key):
  42             raise ValueError(
  43                 "You must specify a bucket location (both the 'S3Bucket' and "
  44                 "'S3Key' properties) or the 'ZipFile' property"
  45             )
  46 
  47 
  48 class VPCConfig(AWSProperty):
  49 
  50     props = {
  51         'SecurityGroupIds': (list, True),
  52         'SubnetIds': (list, True),
  53     }
  54 
  55 
  56 class EventSourceMapping(AWSObject):
  57     resource_type = "AWS::Lambda::EventSourceMapping"
  58 
  59     props = {
  60         'BatchSize': (positive_integer, False),
  61         'Enabled': (bool, False),
  62         'EventSourceArn': (basestring, True),
  63         'FunctionName': (basestring, True),
  64         'StartingPosition': (basestring, True),
  65     }
  66 
  67 
  68 class Function(AWSObject):
  69     resource_type = "AWS::Lambda::Function"
  70 
  71     props = {
  72         'Code': (Code, True),
  73         'Description': (basestring, False),
  74         'FunctionName': (basestring, False),
  75         'Handler': (basestring, True),
  76         'MemorySize': (validate_memory_size, False),
  77         'Role': (basestring, True),
  78         'Runtime': (basestring, True),
  79         'Timeout': (positive_integer, False),
  80         'VpcConfig': (VPCConfig, False),
  81     }
  82 
  83 
  84 class Permission(AWSObject):
  85     resource_type = "AWS::Lambda::Permission"
  86 
  87     props = {
  88         'Action': (basestring, True),
  89         'FunctionName': (basestring, True),
  90         'Principal': (basestring, True),
  91         'SourceAccount': (basestring, False),
  92         'SourceArn': (basestring, False),
  93     }
  94 
  95 
  96 class Alias(AWSObject):
  97     resource_type = "AWS::Lambda::Alias"
  98 
  99     props = {
  100         'Description': (basestring, False),
  101         'FunctionName': (basestring, True),
  102         'FunctionVersion': (basestring, True),
  103         'Name': (basestring, True),
  104     }
  105 
  106 
  107 class Version(AWSObject):
  108     resource_type = "AWS::Lambda::Version"
  109 
  110     props = {
  111         'CodeSha256': (basestring, False),
  112         'Description': (basestring, False),
  113         'FunctionName': (basestring, True),
  114     }
  115
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/troposphere/awslambda.py b/troposphere/awslambda.py
  --- a/troposphere/awslambda.py
  +++ b/troposphere/awslambda.py
  @@ -28,7 +28,7 @@
           zip_file = self.properties.get('ZipFile')
           s3_bucket = self.properties.get('S3Bucket')
           s3_key = self.properties.get('S3Key')
  -        s3_object_version = self.properties.get('SS3ObjectVersion')
  +        s3_object_version = self.properties.get('S3ObjectVersion')
   
           if zip_file and s3_bucket:
               raise ValueError("You can't specify both 'S3Bucket' and 'ZipFile'")
  
verification_info: {"golden_diff": "diff --git a/troposphere/awslambda.py b/troposphere/awslambda.py\n--- a/troposphere/awslambda.py\n+++ b/troposphere/awslambda.py\n@@ -28,7 +28,7 @@\n         zip_file = self.properties.get('ZipFile')\n         s3_bucket = self.properties.get('S3Bucket')\n         s3_key = self.properties.get('S3Key')\n-        s3_object_version = self.properties.get('SS3ObjectVersion')\n+        s3_object_version = self.properties.get('S3ObjectVersion')\n \n         if zip_file and s3_bucket:\n             raise ValueError(\"You can't specify both 'S3Bucket' and 'ZipFile'\")\n", "issue": "S3ObjectVersion is spelled \"SS3ObjectVersion\" in the lambda Code object validation\nI just noticed [this](https://github.com/cloudtools/troposphere/blob/1f67fb140f5b94cf0f29213a7300bad3ea046a0f/troposphere/awslambda.py#L31) while I was reading through the code. I haven't run into problems as I haven't had to use this particular key, but it looks like something you might want to know about.\n\n", "before_files": [{"content": "from . import AWSObject, AWSProperty\nfrom .validators import positive_integer\n\nMEMORY_VALUES = [x for x in range(128, 1600, 64)]\n\n\ndef validate_memory_size(memory_value):\n    \"\"\" Validate memory size for Lambda Function\n    :param memory_value: The memory size specified in the Function\n    :return: The provided memory size if it is valid\n    \"\"\"\n    memory_value = int(positive_integer(memory_value))\n    if memory_value not in MEMORY_VALUES:\n        raise ValueError(\"Lambda Function memory size must be one of:\\n %s\" %\n                         \", \".join(str(mb) for mb in MEMORY_VALUES))\n    return memory_value\n\n\nclass Code(AWSProperty):\n    props = {\n        'S3Bucket': (basestring, False),\n        'S3Key': (basestring, False),\n        'S3ObjectVersion': (basestring, False),\n        'ZipFile': (basestring, False)\n    }\n\n    def validate(self):\n        zip_file = self.properties.get('ZipFile')\n        s3_bucket = self.properties.get('S3Bucket')\n        s3_key = self.properties.get('S3Key')\n        s3_object_version = self.properties.get('SS3ObjectVersion')\n\n        if zip_file and s3_bucket:\n            raise ValueError(\"You can't specify both 'S3Bucket' and 'ZipFile'\")\n        if zip_file and s3_key:\n            raise ValueError(\"You can't specify both 'S3Key' and 'ZipFile'\")\n        if zip_file and s3_object_version:\n            raise ValueError(\n                \"You can't specify both 'S3ObjectVersion' and 'ZipFile'\"\n            )\n        if not zip_file and not (s3_bucket and s3_key):\n            raise ValueError(\n                \"You must specify a bucket location (both the 'S3Bucket' and \"\n                \"'S3Key' properties) or the 'ZipFile' property\"\n            )\n\n\nclass VPCConfig(AWSProperty):\n\n    props = {\n        'SecurityGroupIds': (list, True),\n        'SubnetIds': (list, True),\n    }\n\n\nclass EventSourceMapping(AWSObject):\n    resource_type = \"AWS::Lambda::EventSourceMapping\"\n\n    props = {\n        'BatchSize': (positive_integer, False),\n        'Enabled': (bool, False),\n        'EventSourceArn': (basestring, True),\n        'FunctionName': (basestring, True),\n        'StartingPosition': (basestring, True),\n    }\n\n\nclass Function(AWSObject):\n    resource_type = \"AWS::Lambda::Function\"\n\n    props = {\n        'Code': (Code, True),\n        'Description': (basestring, False),\n        'FunctionName': (basestring, False),\n        'Handler': (basestring, True),\n        'MemorySize': (validate_memory_size, False),\n        'Role': (basestring, True),\n        'Runtime': (basestring, True),\n        'Timeout': (positive_integer, False),\n        'VpcConfig': (VPCConfig, False),\n    }\n\n\nclass Permission(AWSObject):\n    resource_type = \"AWS::Lambda::Permission\"\n\n    props = {\n        'Action': (basestring, True),\n        'FunctionName': (basestring, True),\n        'Principal': (basestring, True),\n        'SourceAccount': (basestring, False),\n        'SourceArn': (basestring, False),\n    }\n\n\nclass Alias(AWSObject):\n    resource_type = \"AWS::Lambda::Alias\"\n\n    props = {\n        'Description': (basestring, False),\n        'FunctionName': (basestring, True),\n        'FunctionVersion': (basestring, True),\n        'Name': (basestring, True),\n    }\n\n\nclass Version(AWSObject):\n    resource_type = \"AWS::Lambda::Version\"\n\n    props = {\n        'CodeSha256': (basestring, False),\n        'Description': (basestring, False),\n        'FunctionName': (basestring, True),\n    }\n", "path": "troposphere/awslambda.py"}], "after_files": [{"content": "from . import AWSObject, AWSProperty\nfrom .validators import positive_integer\n\nMEMORY_VALUES = [x for x in range(128, 1600, 64)]\n\n\ndef validate_memory_size(memory_value):\n    \"\"\" Validate memory size for Lambda Function\n    :param memory_value: The memory size specified in the Function\n    :return: The provided memory size if it is valid\n    \"\"\"\n    memory_value = int(positive_integer(memory_value))\n    if memory_value not in MEMORY_VALUES:\n        raise ValueError(\"Lambda Function memory size must be one of:\\n %s\" %\n                         \", \".join(str(mb) for mb in MEMORY_VALUES))\n    return memory_value\n\n\nclass Code(AWSProperty):\n    props = {\n        'S3Bucket': (basestring, False),\n        'S3Key': (basestring, False),\n        'S3ObjectVersion': (basestring, False),\n        'ZipFile': (basestring, False)\n    }\n\n    def validate(self):\n        zip_file = self.properties.get('ZipFile')\n        s3_bucket = self.properties.get('S3Bucket')\n        s3_key = self.properties.get('S3Key')\n        s3_object_version = self.properties.get('S3ObjectVersion')\n\n        if zip_file and s3_bucket:\n            raise ValueError(\"You can't specify both 'S3Bucket' and 'ZipFile'\")\n        if zip_file and s3_key:\n            raise ValueError(\"You can't specify both 'S3Key' and 'ZipFile'\")\n        if zip_file and s3_object_version:\n            raise ValueError(\n                \"You can't specify both 'S3ObjectVersion' and 'ZipFile'\"\n            )\n        if not zip_file and not (s3_bucket and s3_key):\n            raise ValueError(\n                \"You must specify a bucket location (both the 'S3Bucket' and \"\n                \"'S3Key' properties) or the 'ZipFile' property\"\n            )\n\n\nclass VPCConfig(AWSProperty):\n\n    props = {\n        'SecurityGroupIds': (list, True),\n        'SubnetIds': (list, True),\n    }\n\n\nclass EventSourceMapping(AWSObject):\n    resource_type = \"AWS::Lambda::EventSourceMapping\"\n\n    props = {\n        'BatchSize': (positive_integer, False),\n        'Enabled': (bool, False),\n        'EventSourceArn': (basestring, True),\n        'FunctionName': (basestring, True),\n        'StartingPosition': (basestring, True),\n    }\n\n\nclass Function(AWSObject):\n    resource_type = \"AWS::Lambda::Function\"\n\n    props = {\n        'Code': (Code, True),\n        'Description': (basestring, False),\n        'FunctionName': (basestring, False),\n        'Handler': (basestring, True),\n        'MemorySize': (validate_memory_size, False),\n        'Role': (basestring, True),\n        'Runtime': (basestring, True),\n        'Timeout': (positive_integer, False),\n        'VpcConfig': (VPCConfig, False),\n    }\n\n\nclass Permission(AWSObject):\n    resource_type = \"AWS::Lambda::Permission\"\n\n    props = {\n        'Action': (basestring, True),\n        'FunctionName': (basestring, True),\n        'Principal': (basestring, True),\n        'SourceAccount': (basestring, False),\n        'SourceArn': (basestring, False),\n    }\n\n\nclass Alias(AWSObject):\n    resource_type = \"AWS::Lambda::Alias\"\n\n    props = {\n        'Description': (basestring, False),\n        'FunctionName': (basestring, True),\n        'FunctionVersion': (basestring, True),\n        'Name': (basestring, True),\n    }\n\n\nclass Version(AWSObject):\n    resource_type = \"AWS::Lambda::Version\"\n\n    props = {\n        'CodeSha256': (basestring, False),\n        'Description': (basestring, False),\n        'FunctionName': (basestring, True),\n    }\n", "path": "troposphere/awslambda.py"}]}