使用php将文件从AWS s3预算转移到ec2实例

时间:2015-04-26 22:31:45

标签: php amazon-web-services amazon-ec2 amazon-s3 awss3transfermanager

我一直致力于一个项目,我们将在EC2服务器上拥有一个网站流程。在我的项目中,我能够编写一个php代码,允许用户将文件从Web服务器上传到AWS S3预算。但是,为了从EC2访问该文件,我认为我们需要将文件从S3预算转移到EC2实例。我看到有一个unix命令行方法可以做到这一点,但我正在研究的项目是基于PHP / HTML / JSON。我想知道是否有方法或教程使用PHP访问或从S3传输文件到EC2实例? 感谢

1 个答案:

答案 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