Это оказалось проблемой в элементе управления Flex mx.Image: когда вы назначаете ему URL-адрес в качестве источника, он выполняет некоторое внутреннее декодирование / кодирование URL-адреса, которое может испортить подпись, если вы ее уже закодировали.
Например, мы создаем временный подписанный URL-адрес как этот (взято из as3awss3lib)
url = "http://" + AMAZON_ENDPOINT + "/" + escape(bucketName) + "/" + escape(objectName) + "?AWSAccessKeyId="+this.accessKey+"&Expires="+s+"&Signature="+encodeURIComponent(authString);
Этот URL будет работать, но при назначении его для Image.source базовый SWFLoader имеет внутреннюю функцию OSToPlayerURI (url), которая нарушает сигнатуру.
(ПРИМЕЧАНИЕ. Создание временного URL-адреса без кодирования authString означает, что он потерпит неудачу половину времени, в зависимости от символов сгенерированной подписи - уже пробовал)
Существует надежное (я думаю) исправление, и оно заключается в использовании URL-адреса со знаком для загрузки изображения в байтовый массив с помощью URLStream, а затем в качестве источника mx.Image назначьте ByteArray.
Я создал класс, который инкапсулирует это: S3Image.as
Надеюсь, это кому-нибудь поможет, это было сложно определить, насколько я могу судить, без документов.