Thanks for clarifying! The lookup route didn't work for me, but the groups approach seems to be doing the trick. Here's what I'm getting from the lookups:
TASK: [debug var="{{ lookup('inventory_hostname', 'tag_Role_utilities:&tag_Environment_dev') }}"] ***
fatal: [172.31.57.124] => Failed to template var="{{ lookup('inventory_hostname', 'tag_Role_utilities:&tag_Environment_dev') }}": lookup plugin (inventory_hostname) not found
TASK: [debug var="{{ lookup('inventory_hostnames', 'tag_Role_utilities:&tag_Environment_dev') }}"] ***
fatal: [172.31.57.124] => Failed to template var="{{ lookup('inventory_hostnames', 'tag_Role_utilities:&tag_Environment_dev') }}": inventory_hostnames must be used as a loop. Example: "with_inventory_hostnames: 'all'"
Cheers.