'Creates a customer master key. Customer master keys can be
used to encrypt small amounts of data (less than 4K) directly,
but they are most commonly used to encrypt or envelope data
keys that are then used to encrypt customer data. For more
information about data keys, see GenerateDataKey and
GenerateDataKeyWithoutPlaintext.
:type policy: string
:param policy: Policy to be attached to the key. This is required and
delegates back to the account. The key is the root of trust.
:type description: string
:param description: Description of the key. We recommend that you
choose a description that helps your customer decide whether the
key is appropriate for a task.
:type key_usage: string
:param key_usage: Specifies the intended use of the key. Currently this
defaults to ENCRYPT/DECRYPT, and only symmetric encryption and
decryption are supported.'

def create_key(self, policy=None, description=None, key_usage=None):

    params = {}
    if (policy is not None):
        params['Policy'] = policy
    if (description is not None):
        params['Description'] = description
    if (key_usage is not None):
        params['KeyUsage'] = key_usage
    return self.make_request(action='CreateKey', body=json.dumps(params))
