如何将文件上传到Amazon S3?

时间:2015-10-21 20:47:38

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

我在AWS EC2实例上运行了一个PHP应用程序。我想将文件上传到单元,然后将该文件保存到S3存储桶。我现在可以把文件带到Ec2实例,但是对于我的生活,我无法弄清楚如何使用puObject调用将它移动到S3实例...我是AWS的新手,所以如果有人可以给我是一个指针,它会帮助很多!

1 个答案:

答案 0 :(得分:4)

如何使用PHP将数据从EC2实例传输到S3有三个选项:

1。使用AWS PHP SDK

这是首选方案。该SDK由亚马逊发布,包括一个易于使用的API接口,用于所有服务。它还允许您使用EC2实例的IAM角色作为凭据,这意味着您不必将API密钥等存储在代码中。 Example use

// Use an Aws\Sdk class to create the S3Client object.
$s3Client = $sdk->createS3();

// Send a PutObject request and get the result object.
$result = $s3Client->putObject([
    'Bucket' => 'my-bucket',
    'Key'    => 'my-key',
    'Body'   => file_get_contents($pathToYourFile)
]);

// Download the contents of the object.
$result = $s3Client->getObject([
    'Bucket' => 'my-bucket',
    'Key'    => 'my-key'
]);

// Print the body of the result by indexing into the result object.
echo $result['Body'];

2。使用EC2实例的AWS CLI

这不太理想,但仍然可行。我不建议这样做,因为它意味着您使用PHP来访问shell,并假设shell已配置AWS CLI(默认情况下,大多数情况下并非所有EC2实例都会执行)。例如:

shell_exec('aws s3 cp /path/to/your/file.txt s3://bucket-name/path/your/file.txt');

3。使用REST

烘焙您自己的S3 API调用

这可能是使用SDK后的下一个最佳选择,虽然它要求您将凭据存储在代码中,必须制定您的HMAC签名并确保您的API结构符合亚马逊的指南。请注意,PHP SDK会为您完成所有这些操作,但这样您就不需要安装整个SDK。

如果你这样做,你需要了解如何sign your requests