创建和使用 Amazon S3 存储桶AmazonSDK for PHP - Amazon适用于 PHP 的开发工具包
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建和使用 Amazon S3 存储桶AmazonSDK for PHP

以下示例演示如何:

  • 使用 ListBuckets 返回已经过身份验证的请求发件人所拥有的存储桶列表。

  • 使用 CreateBucket 创建新存储桶。

  • 使用 PutObject 向存储桶添加对象。

的所有示例代码Amazon适用 SDK for PHP 版本 3GitHub 上的此处.

Credentials

运行示例代码之前,请配置您的Amazon凭证,如中所述的凭证AmazonSDK for PHP. 然后导入AmazonSDK for PHP,如中所述的基本使用模式AmazonSDK for PHP.

导入

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;

列出存储桶

使用以下代码创建 PHP 文件。首先创建一个 AWS.S3 客户端服务,它将指定Amazon地区和版本。然后调用listBuckets方法,它将以存储桶结构的数组形式返回请求的发件人拥有的所有 Amazon S3 存储桶。

示例代码

$s3Client = new S3Client([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2006-03-01' ]); //Listing all S3 Bucket $buckets = $s3Client->listBuckets(); foreach ($buckets['Buckets'] as $bucket) { echo $bucket['Name'] . "\n"; }

创建存储桶

使用以下代码创建 PHP 文件。首先创建一个 AWS.S3 客户端服务,它将指定Amazon地区和版本。然后调用 createBucket 方法并将数组作为参数。唯一的必需字段是“Bucket”键,它包含了表示要创建的存储桶名称的字符串值。但是,您可以指定Amazon具有 “CreateBucketConfiguration” 字段的区域。如果成功,此方法将返回存储桶的“Location”。

示例代码

function createBucket($s3Client, $bucketName) { try { $result = $s3Client->createBucket([ 'Bucket' => $bucketName, ]); return 'The bucket\'s location is: ' . $result['Location'] . '. ' . 'The bucket\'s effective URI is: ' . $result['@metadata']['effectiveUri']; } catch (AwsException $e) { return 'Error: ' . $e->getAwsErrorMessage(); } } function createTheBucket() { $s3Client = new S3Client([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2006-03-01' ]); echo createBucket($s3Client, 'my-bucket'); } // Uncomment the following line to run this code in an AWS account. // createTheBucket();

在存储桶中放置对象

要向新存储桶中添加文件,请使用以下代码创建一个 PHP 文件。

在命令行执行此文件,然后以字符串形式传入要将文件上传到的存储桶的名称,后跟要上传的文件的完整文件路径。

示例代码

$USAGE = "\n" . "To run this example, supply the name of an S3 bucket and a file to\n" . "upload to it.\n" . "\n" . "Ex: php PutObject.php <bucketname> <filename>\n"; if (count($argv) <= 2) { echo $USAGE; exit(); } $bucket = $argv[1]; $file_Path = $argv[2]; $key = basename($argv[2]); try { //Create a S3Client $s3Client = new S3Client([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2006-03-01' ]); $result = $s3Client->putObject([ 'Bucket' => $bucket, 'Key' => $key, 'SourceFile' => $file_Path, ]); } catch (S3Exception $e) { echo $e->getMessage() . "\n"; }