This can occur when the Datadog Hostname and AWS Instance Name are not exactly the same.
In order for the platform to set Agent status to "yes" and display metrics for an instance the Datadog Hostname and AWS Instance Name must exactly match.
Notice in the screen shot below from the Assets > Datadog > Hosts report when Agent is set to "yes" and metrics have been collected its only when the Instance Name and Datadog Hostname match. The other Hosts do not have a Hostname that matches an Instance Name in AWS which results in Instance name being blank, Agent status being set to "no", and no metrics being collected by the platform for these Hosts.
To fix this issue so the platform can start ingesting metrics for these Hosts make sure the Hostnames in Datadog for the Hosts match the AWS Instance Names in the AWS Console.