适用于 PHP 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用适用于 PHP 的 AWS 开发工具包版本 3 来创建和使用 Amazon S3 存储桶

以下示例演示如何:

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

  • 使用 CreateBucket 创建新存储桶。

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

GitHub 上的此处提供了AWS SDK for PHP版本 3 的所有示例代码。

凭证

在运行示例代码之前,您需要配置 AWS 凭证,如适用于 PHP 的 AWS 开发工具包版本 3 的凭证中所述。然后导入AWS SDK for PHP,如适用于 PHP 的 AWS 开发工具包版本 3 的基本使用模式中所述。

导入

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

列出存储桶

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

示例代码

$BUCKET_NAME = '<BUCKET-NAME>'; //Create a S3Client $s3Client = new S3Client([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2006-03-01' ]); //Creating S3 Bucket try { $result = $s3Client->createBucket([ 'Bucket' => $BUCKET_NAME, ]); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

在存储桶中放置对象

要向新存储桶中添加文件,请使用以下代码创建一个 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"; }