I think this might be an issue with S3 Access rights/permissions, but I am lost as to how to proceed.
I create a mp3 file with this:
$result_audio = $client->startSpeechSynthesisTask([
'Engine' => 'standard',
'OutputFormat' => 'mp3',
'OutputS3BucketName' => 'BUCKET',
'Text' => $chunk_text,
'VoiceId' => $row_data['cv_service_id']
]);
$s3KeyName = substr($result_audio['SynthesisTask']['OutputUri'], 43);
$s3->copyObject([
'Bucket' => 'BUCKET',
'Key' => urlencode($new_id.'.mp3'),
'CopySource' => "BUCKET/".urlencode($s3KeyName),
]);
I replaced my bucket with BUCKET for this post.
I get a 404 not found on the copy object, even though I have double checked that the temp file is created. It is auto generated by Amazon Polly and I cannot change the way it is saved. It does not contain anything I think needs to be urlencoded, but I added that to make sure.
An example of the $s3KeyName:
3b7901d6-52af-44ce-9993-b2f805153e85.mp3
I have used the Policy simulator to check that the IAM user credentials have access:
https://policysim.aws.amazon.com/home/index.jsp
I checked the following permissions:
S3
DeleteObject
GetObject
PutObject
GetObjectTagging
PutObjectTagging
PutObject
ListAllMyBuckets
s3express
CreateSession
I have granted the IAM user full access to s3 and s3 express, but still nothing changes. I do have the bucket set to prevent public access with all options checked, but I don't think that should stop an authenticated IAM user?
There is no way to set the filename when creating an Amazon Polly mp3 file with startSpeechSynthesisTask, right?
Any guidance what I should do?