В настоящее время я создаю аутентифицированный URL как:
$this->s3Client = new S3Client($this->options);
$cmd = $this->s3Client->getCommand('GetObject', [
'Bucket' => $bucket_name,
'Key' => $object_key
]);
$request = $this->s3Client->createPresignedRequest($cmd, PRESIGNED_URL_VALIDITY);
$presignedUrl = (string) $request->getUri();
Есть ли способ, которым я мог бы генерировать параметры запроса в аутентифицированном URL самостоятельно, не используя createPresignedRequest
,
Мне нужно отдельно создать:
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=
&X-Amz-Date=20130721T201207Z
&X-Amz-Expires=86400
&X-Amz-SignedHeaders=host
&X-Amz-Signature=<signature-value>
и добавьте его к пути файла корзины, чтобы включить его в предварительно назначенный запрос.
Мне не совсем понятно, что вы подразумеваете под «генерацией параметров запроса в аутентифицированном URL самостоятельно». AWS использует OpenSSL иметь дело с генерированием подписей и созданием подписанных URL.
Вы можете создавать подписанные URL-адреса полностью без PHP, например, в командной строке Linux, используя openssl
команда. Проверьте это для примера bash: https://github.com/gdbtek/aws-tools/blob/master/sign_s3_url.bash.
Вы также можете использовать PHP без S3Client для создания подписанных URL-адресов, используя PHP OpenSSL расширение и используя openssl_*
функции.
Других решений пока нет …