I am running into the same issue, IAM policies that contain ${transfer:UserName} break but if i replace it with the actual username it works. This points to something going wrong with interpolating the ${transfer:UserName} at policy execution time.