ssigwart / aws-high-availability-s3
一个用于实现高可用性S3调用的库。
v1.0.1
2023-11-26 19:13 UTC
Requires
- php: >=8.0.0
- aws/aws-sdk-php: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.4
README
此库使得以高可用性写入S3文件变得容易。它包含以下功能:
- 将S3文件上传到第一个成功的位置。
- 下载位于多个位置可用的S3文件。
用法
API需要您传递一个\Aws\Sdk对象。在下面的示例中,使用$awsSdk表示此对象。
上传文件
- 创建一个可用的上传位置列表。
- 这是一个
S3AvailableUploadFileBucketAndKeyLocations对象。 - 您可以将实现了
S3FileBucketAndKeyProviderInterface接口的任何内容添加到位置列表中。 - 最简单的选项是使用
S3FileBucketAndKey,它实现了此接口。
- 这是一个
- 设置
S3UploadFileMetadata,为要上传的文件提供元数据。 - 创建一个
AwsHighAvailabilityS3Uploader对象并调用uploadFileToS3。- 您可以使用
AwsHighAvailabilityS3UploaderErrorHandlerInterface配置上传器来自定义失败处理。例如,您可能想用它来记录异常,或者如果您想停止尝试其他位置,则可以抛出异常。
- 您可以使用
// Set up possible locations $primaryLocation = new S3FileBucketAndKey('us-east-1', 'phpunit-test-us-east-1', 'us-east-1/path/to/file.txt'); $backupLocation = new S3FileBucketAndKey('us-west-1', 'phpunit-test-us-west-1', 'us-west-1/path/to/file.txt'); $locations = new S3AvailableUploadFileBucketAndKeyLocations($primaryLocation); $locations->addAlternativeLocation($backupLocation); // Set up meta data $metadata = new S3UploadFileMetadata(); // Upload $s3Uploader = new AwsHighAvailabilityS3Uploader($awsSdk); $finalLocation = $s3Uploader->uploadFileToS3($locations, 'File contents.', 'text/plain', $metadata);
下载文件
- 创建一个可用的下载位置列表。
- 这是一个
S3AvailableDownloadFileBucketAndKeyLocations对象。 - 您可以将实现了
S3FileBucketAndKeyProviderInterface接口的任何内容添加到位置列表中。 - 最简单的选项是使用
S3FileBucketAndKey,它实现了此接口。
- 这是一个
- 创建一个
AwsHighAvailabilityS3Downloader对象并调用downloadFileFromS3。- 您可以使用
AwsHighAvailabilityS3DownloaderErrorHandlerInterface配置下载器来自定义失败处理。例如,您可能想用它来记录异常,或者如果您想停止尝试其他位置,则可以抛出异常。
- 您可以使用
// Set up possible locations $primaryLocation = new S3FileBucketAndKey('us-east-1', 'phpunit-test-us-east-1', 'us-east-1/path/to/file.txt'); $backupLocation = new S3FileBucketAndKey('us-west-1', 'phpunit-test-us-west-1', 'us-west-1/path/to/file.txt'); $locations = new S3AvailableDownloadFileBucketAndKeyLocations($primaryLocation); $locations->addAlternativeLocation($backupLocation); // Download $s3Downloader = new AwsHighAvailabilityS3Downloader($awsSdk); $contents = $s3Downloader->downloadFileFromS3($locations);
S3UploadFileMetadata选项
S3UploadFileMetadata类允许您自定义以下内容:
- S3存储类别。
- S3 ACL(公共与私有)。
- 公共对象的缓存TTL。