Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将文件从AWS s3预算传输到ec2实例_Php_Amazon Web Services_Amazon Ec2_Amazon S3_Awss3transfermanager - Fatal编程技术网

使用php将文件从AWS s3预算传输到ec2实例

使用php将文件从AWS s3预算传输到ec2实例,php,amazon-web-services,amazon-ec2,amazon-s3,awss3transfermanager,Php,Amazon Web Services,Amazon Ec2,Amazon S3,Awss3transfermanager,我一直在做一个项目,我们将有一个EC2服务器上的网站进程。在我的项目中,我能够编写一个php代码,允许用户将文件从web服务器上传到AWS S3。然而,为了从EC2访问该文件,我认为我们需要将文件从S3预算传输到EC2实例。我看到有一种unix命令行方法可以做到这一点,但我正在处理的项目是基于PHP/HTML/JSON的。我想知道是否有一种方法或教程可以使用PHP从S3访问或传输文件到EC2实例? 谢谢您不需要将文件从S3传输到EC2,事实上,这会浪费资源。相反,即使bucket/文件是私有的,

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

您不需要将文件从S3传输到EC2,事实上,这会浪费资源。相反,即使bucket/文件是私有的,也可以在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.
进一步阅读:

我需要能够从s3获取文件,因为ec2的代码需要客户端上传的文件来显示它。需要该文件的不是客户而是我。亚马逊文档提供了您需要的所有答案,我建议您查看一下。尽管如此,请看我更新的答案。s3预算是什么意思?