Processing Batch Job
Validation
This function _is_player_id_list_valid is stuck between two useful concepts - validating and returning bool, and throwing-or-not. Don't attempt to do a half-measure of both. Given its current name, it would be less surprising to do
for player_id in provided_player_id_list:
    if player_id not in all_player_id_list:
        return False
return True

If you want to keep the exception, then

Delete the return
Change the return type to None
Use a more specific type than Exception
Rename the method to something like check_player_id_list.

For this method you should also get rid of the loop, cast the lists to sets, use set intersection, and then base your error message off of all of the missing elements instead of just the first.
Late serialization
Validation should be done on tranche_date. The sanest way to do this is expect a date of a specific format (which you probably already do, though you haven't shown it); parse it into a real datetime (or perhaps date), and then re-serialize it in _get_all_player_id. Its representation should only be str at the extreme edges of your program - in your argument parsing, and in your S3 call. In the middle it should be a real date type.
Error messages
except BatchTimeoutException:
    print(f&quot;Jobs are known to fail due data missingness.&quot;)

is... a little strange. You could print this and it would still be valid even if there were no timeout. Instead perhaps consider
    print('Batch timed out. Data may be missing.')

Note that this does not need to be an f-string. Also, what data?