0

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

4

1 回答 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 回答