Probably one of your calls (SES) is working using temporary credentials from instance profile and not the hardcoded credentials? To narrow down this you can try to run some commands using those credentials from local CLI to see if they are accepted or no. BTW it's a good practice to use temp credentials from instance profile instead of putting credentials inside your code, so probably you can re-write your app to use that (if you use AWS PHP SDK that is very simple).
For sure there is something wrong with the credentials. Please check this article.
It's hard to tell more without seeing the code, but it looks like there is something different in access keys for SES and SQS. I think you should debug it and check if it's properly passed to the SQS client.
InvalidClientTokenId sending message to SQS that works for SESasked 9 months ago
Run callback when SQS gets message?Accepted Answerasked 7 months ago
SQS not receiving SNS messageasked 3 years ago
SQS Message retrival after message is deletedasked 2 months ago
SQS Not Sending Message to Queueasked 3 months ago
AWS SQS Logging Message ConsumptionAccepted Answerasked 3 months ago
SES Status Notification with SQS FIFO Queueasked 4 months ago
Standard SQS - Duplicate messageasked 5 months ago
Reading SQS Message via Listenerasked 5 months ago
SQS has occasional message latencies of up to 5 minutesasked 6 months ago