Like you mentioned you are using the amazon redshift spectrum.
when you are getting access denies it is probably an issue of permissions, please check your role and its permissions which it attached to the redshift cluster.
you mentioned your column which is defined as struct did you create your external table like this https://stackoverflow.com/a/66705424/13126651
here my external table was a single object with single key entries and value was array of objects.
example
CREATE EXTERNAL TABLE jatinspectrum.extab (
enteries array<struct<title:varchar(4000),link:varchar(4000),author:varchar(4000),published_date:timestamp,category:array<varchar(4000)>>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
stored as textfile
LOCATION 's3://xxxxxxxxxxxxxx/xxxxxxxxxxxxxx/xxxxxxxxxxx/';
Refers docs for roles and external table