我一直致力于一个项目,我们将在EC2服务器上拥有一个网站流程。在我的项目中,我能够编写一个php代码,允许用户将文件从Web服务器上传到AWS S3预算。但是,为了从EC2访问该文件,我认为我们需要将文件从S3预算转移到EC2实例。我看到有一个unix命令行方法可以做到这一点,但我正在研究的项目是基于PHP / HTML / JSON。我想知道是否有方法或教程使用PHP访问或从S3传输文件到EC2实例? 感谢
答案 0 :(得分:0)
您不需要将文件从S3传输到EC2,实际上这会浪费资源。相反,您可以直接在S3上生成指向该文件的签名URL(即使存储桶/文件是私有的)。此链接也可以设置为在一段时间后过期。以下是使用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