• From the link in my previous post:

    To execute a module specified with EXECUTE AS, the caller must have EXECUTE permissions on the module.

    And

    To specify the EXECUTE AS clause when you create or modify a module, you must have IMPERSONATE permissions on the specified principal and also permissions to create the module. You can always impersonate yourself. When no execution context is specified or EXECUTE AS CALLER is specified, IMPERSONATE permissions are not required.