Я работал над проектом, где у нас будет процесс веб-сайта на сервере EC2. В моем проекте мне удалось написать php-код, который позволит пользователям загружать файлы с веб-сервера в бюджет AWS S3. Однако, чтобы получить доступ к этому файлу из EC2, я думаю, нам нужно перенести файл из бюджета S3 в экземпляр EC2. Я видел, что есть способ командной строки Unix, но проект, над которым я работаю, основан на PHP / HTML / JSON. Интересно, есть ли способ или учебник для доступа или передачи файла из S3 в EC2 экземпляр с помощью PHP?
Спасибо
Вам не нужно переносить файл из S3 в EC2, на самом деле это будет пустой тратой ресурсов. Вместо этого вы можете сгенерировать подписанный URL-адрес, указывающий на файл непосредственно на S3 (даже если сегмент / файл является личным). Эту ссылку также можно установить, чтобы истечь через определенный период. Вот пример использования AWS PHP SDK:
<?php
require 'aws-autoloader.php'; //SDK autoloader file
//*** Initiate an S3 client
$client = S3Client::factory(array(
'key' => "public_key",
'secret' => "private_key",
'region' => "your s3 region"));
$url = $client->getObjectUrl("bucket_name", "full_object_name", "+1 minutes"[optional]);
echo $url; //Print the direct S3 link to the file, which will expire in 1 minute.
//This will work even if the bucket is private.
[Обновить]
Если вам все еще нужно загрузить файл из S3 в EC2, сделайте это:
<?php
require 'aws-autoloader.php'; //SDK autoloader file
//*** Initiate an S3 client
$client = S3Client::factory(array(
'key' => "public_key",
'secret' => "private_key",
'region' => "your s3 region"));
$result = $client->getObject(array(
'Bucket' => "bucket_name",
'Key' => "name of file",
'SaveAs' => "ec2 path to save the file at"));
echo $result; //make sure download worked.
Дальнейшее чтение:
http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html
Других решений пока нет …