Thanks @JonB. I finally got this working. Below is my full code. I think io.BytesIO() was what i was primarily missing. That said, if you have a better way of doing this, please feel free to share.
#Prompt user to take a photo and save to variable
import photos
first_img = photos.capture_image()
#Scale down photo size and save to new variable
import PIL
from PIL import Image
basewidth = 600
img = first_img
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
#Convert photo to bytes snd save to new variable
import io
imgByteArr = io.BytesIO()
img.save(imgByteArr, format='PNG')
final_img = imgByteArr.getvalue()
#Import AWS SDK and initalize client with needed credentials
import boto3
client = boto3.client('rekognition')
#Send photo to AWS for analysis
response = client.detect_faces(
Image={
'Bytes': final_img,
},
Attributes=[
'ALL',
]
)
#Print response for AWS API
print(response)