Я разрабатываю веб-приложение с использованием PHP. В моем приложении мне нужно загрузить файл в корзину AWS S3, используя предварительно назначенный URL-адрес. Теперь я могу прочитать приватный файл из корзины S3, используя предварительно подписанную вот так.
$s3Client = new S3Client([
'version' => 'latest',
'region' => env('AWS_REGION', ''),
'credentials' => [
'key' => env('AWS_IAM_KEY', ''),
'secret' => env('AWS_IAM_SECRET', '')
]
]);
//GetObject
$cmd = $s3Client->getCommand('GetObject', [
'Bucket' => env('AWS_BUCKET',''),
'Key' => 'this-is-uploaded-using-presigned-url.png'
]);
$request = $s3Client->createPresignedRequest($cmd, '+20 minutes');
//This is for reading the image. It is working.
$presignedUrl = (string) $request->getUri();
Когда я получаю доступ к $presignedUrl
из браузера я могу получить файл с s3. Это работает. Но сейчас я загружаю файл на S3. Не читает файл с s3. Обычно я могу загрузить файл на S3 следующим образом.
$client->putObject(array(
'Bucket' => $bucket,
'Key' => 'data.txt',
'Body' => 'Hello!'
));
Приведенный выше код не использует предварительно подписанный URL. Но мне нужно загрузить файл, используя предварительно подписанный URL. Как я могу загрузить файл, используя предварительно подписанный URL. Например, я думаю, что-то вроде этого.
$client->putObject(array(
'presigned-url' => 'url'
'Bucket' => $bucket,
'Key' => 'data.txt',
'Body' => 'Hello!'
));
Как я могу загрузить?
Задача ещё не решена.
Других решений пока нет …