Sets a parameter in the SSM parameter store

    .. versionadded:: Neon

    .. code-block:: text

        salt-call boto_ssm.put_parameter test-param test_value Type=SecureString KeyId=alias/aws/ssm Description='test encrypted key'

def put_parameter(Name,
                  Value,
                  Description=None,
                  Type='String',
                  KeyId=None,
                  Overwrite=False,
                  AllowedPattern=None,
                  region=None,
                  key=None,
                  keyid=None,
                  profile=None):
    '''
    Sets a parameter in the SSM parameter store

    .. versionadded:: Neon

    .. code-block:: text

        salt-call boto_ssm.put_parameter test-param test_value Type=SecureString KeyId=alias/aws/ssm Description='test encrypted key'
    '''
    conn = __utils__['boto3.get_connection']('ssm', region=region, key=key, keyid=keyid, profile=profile)
    if Type not in ('String', 'StringList', 'SecureString'):
        raise AssertionError('Type needs to be String|StringList|SecureString')
    if Type == 'SecureString' and not KeyId:
        raise AssertionError('Require KeyId with SecureString')

    boto_args = {}
    if Description:
        boto_args['Description'] = Description
    if KeyId:
        boto_args['KeyId'] = KeyId
    if AllowedPattern:
        boto_args['AllowedPattern'] = AllowedPattern

    try:
        resp = conn.put_parameter(Name=Name, Value=Value, Type=Type, Overwrite=Overwrite, **boto_args)
    except conn.exceptions.ParameterAlreadyExists:
        log.warning("The parameter already exists."
                    " To overwrite this value, set the Overwrite option in the request to True")
        return False
    return resp['Version']