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