使用 AWS SDK for PHP 版本 3 来创建和使用 Amazon S3 存储桶 - AWS SDK for PHP

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

使用 AWS SDK for PHP 版本 3 来创建和使用 Amazon S3 存储桶

以下示例演示如何:

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

  • 使用创建新的存储桶CreateBucket

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

的所有示例代码都可以在此AWS SDK for PHP处找到 GitHub

凭证

运行示例代码之前,请配置您的 AWS 凭证,如 凭证 中所述。然后导入 AWS SDK for PHP,如 基本用法 中所述。

导入

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

列出存储桶

使用以下代码创建 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”。

示例代码

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"; }