The reporting job can download an encrypted object from S3, but fails when AWS KMS tries to decrypt its data key.
Read the failing API call and identify which authorization layer denied it.
Try: aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=Decrypt
The reporting role can decrypt only its data.
The exact KMS request is allowed without granting wildcard decrypt access.
Lesson
Trace AccessDenied to the API that actually rejected the call. For KMS, scope permissions by key and encryption context so a necessary decrypt grant does not become a general-purpose decryption capability.
Edit reporting-kms-policy.tf
Scope the permission to the reporting key and the reports/ object prefix.