我一直在做一个项目,我们将在 EC2 服务器上建立一个网站进程。在我的项目中,我能够编写一个允许用户将文件从 Web 服务器上传到 AWS S3 预算的 php 代码。但是,为了从 EC2 访问该文件,我认为我们需要将文件从 S3 预算传输到 EC2 实例。我看到有一个 unix 命令行方法可以做到这一点,但我正在处理的项目是基于 PHP/HTML/JSON 的。我想知道有没有一种方法或教程可以使用 PHP 访问或将文件从 S3 传输到 EC2 实例?
谢谢
问问题
747 次
1 回答
0
您不需要将文件从 S3 传输到 EC2,实际上这会浪费资源。相反,您可以直接在 S3 上生成指向该文件的签名 url(即使存储桶/文件是私有的)。此链接也可以设置为在一段时间后过期。以下是使用 AWS PHP 开发工具包的示例:
<?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
于 2015-04-26T22:53:16.390 回答