A standard idiom in situations like this is to use the states to "remember" the number of $a$s and $b$s seen so far, so we can list the states as $s_{p,q}$, with the interpretation that if you're in state $s_{p,q}$, then you have seen $p$ $a$s and $q$ $b$s.
Now the $p$ that are of interest to us are $p=0$ and $p\ge 1$. The $p\ge 1$ values are the ones we'll accept. Similarly, the $q$ that are of interest to us are $q=0, 1, 2$ and $q>2$ and we'll accept $q=0,1, 2$. Combining these, we'll have eight states corresponding to the pairs
$$
(0, 0)\quad(0,1)\quad(0, 2)\quad (0, 3^+)\quad(1^+, 0)\quad(1^+,1)\quad(1^+, 2)\quad (1^+, 3^+)
$$
where the notation $n^+$ means the relevant variable is greater than or equal to $n$
Since you want to accept strings where the number of $a$s to be greater than or equal to 1 AND the number of $b$s is $0,1,2$ the final states of this FA will be
$$
s_{1^+,0}\quad s_{1^+,1}\quad s_{1^+,2}
$$
Filling the transitions is easy. For example, in state $s_{0,2}$ seeing an $a$ the machine will change to $s_{1,2}$ and seeing a $b$ will change to $s_{0,3^+}$. Do this for all eight states and you'll have completed the FA.
- This is known as the Cartesian product of two finite automata. I didn't come across a good online source for this, but it's in many theory texts.
- This construction will work for other conditions as well. For instance if you had wanted a machine to accept strings with 1 or more $a$s OR 2 or less $b$s, you'd construct exactly the same FA but the final states would be
$$
s_{0,0}\quad s_{0,1}\quad s_{0,2}\quad s_{1^+,0}\quad s_{1^+,1}\quad s_{1^+,2} \quad s_{1^+,3^+}
$$