jayvee / aws
TYPO3 Flow的亚马逊网络服务集成
Requires
- aws/aws-sdk-php: ~3.6
- typo3/flow: ~3.0
This package is not auto-updated.
Last update: 2024-09-28 17:49:16 UTC
README
此包为您提供新的TYPO3 Flow资源管理中S3资源存储和发布目标。它还附带了一个方便的小工厂,您可以使用它轻松地创建各种服务的客户端。
警告 此包仍在开发中。配置选项可能会更改,某些功能可能无法按预期工作。请勿在生产环境中使用。
安装
只需将jayvee/aws包作为需求添加到您的根composer.json中,然后运行composer update以安装此包。
配置
设置您的AWS凭据
推荐的身份验证方法是使用实例配置文件凭据或环境变量。有关如何设置这些的更多信息,请参阅AWS用户指南。如果您无法使用这些身份验证方法,您也可以在包的Settings.yaml中设置您的凭据。
Jayvee: Aws: sdk: credentials: key: <access_key> secret: <secret_key> region: <preferred_region>
还有一个选项可以设置您首选的AWS区域,如果未设置,则默认为eu-east-1。
资源存储
资源存储和发布目标可以在TYPO3 Flow包的设置中定义。要简单地将S3存储桶设置为资源存储,只需做以上操作。如果指定的S3存储桶不存在,存储将尝试创建它(同样适用于发布目标)。
TYPO3: Flow: resource: storages: s3PersistentResourcesStorage: storage: 'Jayvee\Aws\Resource\Storage\S3Storage' storageOptions: bucketName: '<bucket_name>'
存储无需进一步配置,您可以使用上述配置开始使用。
发布目标
您可以直接从S3存储桶或使用额外的CloudFront支持将其用作CDN来发布您的资源。如果您只想从S3提供服务,以下配置将完成此任务。
TYPO3: Flow: resource: targets: s3PersistentResourcesTarget: target: 'Jayvee\Aws\Resource\Target\S3Target' targetOptions: bucketName: '<bucket_name>'
注意: 您可以将一个存储桶同时用作存储和发布目标。资源默认存储为ACL私有,发布时设置为public-read。如果您使用不同的存储桶,资源将复制到定义为发布目标的存储桶。
添加CloudFront支持
要使用CloudFront而不是直接从S3存储桶提供服务,请使用cloudFront选项添加您想使用的分发的标识符。由于创建分发是一个耗时较长的任务,您将必须自己设置它,并将S3存储桶设置为它的源,例如通过AWS控制台。
TYPO3: Flow: resource: targets: s3PersistentResourcesTarget: target: 'Jayvee\Aws\Resource\Target\S3Target' targetOptions: bucketName: '<bucket_name>' cloudFront: distributionIdentifier: '<distribution>
目标将读取您的分发配置,并自动使用可用的源访问身份。请注意,您不需要为源访问身份设置存储桶策略,因为权限是按对象授予的。
故障排除
在资源发布过程中,您可能会收到以下错误
An error occurred while publishing resources (see full description below). You can check and probably fix the integrity of the resource registry by using the resource:clean command.
TYPO3\Flow\Error\Exception (Exception code: 1)
Warning: file_put_contents(/tmp/aws-cache/data_s3_2006-03-01_paginators-1.json.php): failed to open stream: Permission denied in {...}/Packages/Libraries/aws/aws-sdk-php/src
/JsonCompiler.php line 93
这很可能是由于AWS SDK的缓存目录权限不正确引起的。只需更改权限或编辑AWS_PHP_CACHE_DIR环境变量以使用另一个目录。更详细的描述可以在AWS SDK for PHP常见问题解答中找到。
接下来是什么?
以下功能已计划并即将推出
- 更多CloudFront选项,例如使用CNAME或资源下线时发送无效化请求
- 在存储和发布目标上配置缓存选项