andersundsehr/aus-driver-amazon-s3

为Amazon Web Service AWS S3提供FAL驱动程序。

安装次数: 171,087

依赖项: 1

建议者: 0

安全性: 0

星标: 21

关注者: 9

分支: 40

公开问题: 23

类型:typo3-cms-extension

1.13.0 2024-01-03 08:26 UTC

README

Packagist Release Packagist Downloads GitHub License Code Climate Contributors

TYPO3扩展:Amazon AWS S3 FAL驱动程序(CDN)

这是一个文件抽象层(FAL)的驱动程序,以支持Amazon AWS S3。

您可以创建一个文件存储,允许您上传/下载文件并将其链接到AWS S3存储桶。它还支持TYPO3 CMS图像渲染。

需要TYPO3 11.5 - 12.4

问题跟踪:GitHub:AWS S3 FAL驱动程序

Packagist:andersundsehr/aus-driver-amazon-s3

安装

  1. 通过composer安装TYPO3扩展(推荐)或通过TER安装扩展(不再推荐)。

Composer安装

composer require andersundsehr/aus-driver-amazon-s3
  1. 在根页面(pid = 0)添加一个新的带有“AWS S3”驱动程序的文件存储。
  2. 配置您的文件存储

配置

驱动程序配置

添加以下配置

  • 存储桶:您的AWS S3存储桶名称
  • 区域:存储桶所在的区域(存储桶名称中避免使用点)
  • 您的AWS账户的密钥和密钥(可选,您也可以使用IAM角色或环境变量)
  • 公共基础URL(可选):这是您的存储桶的公共URL,如果为空,则默认为“bucketname.s3.amazonaws.com”
  • 协议:网络协议(https://, http://或自动检测)

提示:Amazon AWS S3存储桶配置

确保您的AWS S3存储桶对公共网络用户可访问。

例如,在“编辑存储桶策略”中添加以下默认权限

示例权限

{
  "Version": "2008-10-17",
  "Statement": [
      {
          "Sid": "AddPerm",
          "Effect": "Allow",
          "Principal": "*",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::bucketname/*"
      }
  ]
}

扩展配置

在“扩展管理器”中编辑以下扩展设置

  • dnsPrefetch 使用DNS预加载标签:如果启用,将包含一个HTML标签,该标签将预加载当前CDN的DNS
  • doNotLoadAmazonLib 不加载Amazon AWS PHP SDK:如果启用,您必须自己包含SDK! (http://aws.amazon.com/de/sdk-for-php/)
  • enablePermissionsCheck 检查每个文件和文件夹的S3权限。默认情况下,此功能被禁用,因为它非常慢(TYPO3必须为每个文件发出AWS请求)

缓存配置

自定义TYPO3缓存后端

  • ausdriveramazons3_metainfocache 根据每个对象保留AWS S3上的元数据。
  • ausdriveramazons3_requestcache 存储特定请求的完整响应,便于高效数据访问和性能提升。

默认情况下,这些缓存是瞬时的。但是,如果您选择配置持久化缓存后端,请务必记住,此类缓存不会自动识别数据源的变化。在这种情况下,您必须手动实施必要的更新。

有关如何自定义这些缓存后端的详细说明,请参阅TYPO3 CachingFramework配置指南。请记住,修改缓存后端时进行彻底测试至关重要。

扩展扩展

初始化S3客户端

如果您使用自己的Amazon AWS SDK,您可能希望使用自己的S3客户端对象。

因此,您必须在您的ext_localconf.php中使用以下钩子

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['aus_driver_amazon_s3']['initializeClient-preProcessing'][] = \Vendor\ExtensionName\Hooks\AmazonS3DriverHook::class . '->initializeClient';

钩子类可能看起来像这样

namespace Vendor\ExtensionName\Hooks;

class AmazonS3DriverHook {

  public function initializeClient(array &$params, $obj){
    $params['s3Client'] = MyAwsFactory::getAwsS3Client($params['configuration']);
  }
}

初始化公共基础URL

您可以在驱动程序(TYPO3后端)的配置中设置公共基本URL。但也许您想在其他位置设置它。

因此,您必须在您的ext_localconf.php中使用以下钩子

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['aus_driver_amazon_s3']['initializeBaseUrl-postProcessing'][] = \Vendor\ExtensionName\Hooks\AmazonS3DriverHook::class . '->initializeBaseUrl';

钩子类可能看起来像这样

namespace Vendor\ExtensionName\Hooks;

class AmazonS3DriverHook {

  public function initializeBaseUrl(array &$params, $obj){
    $params['baseUrl'] = 'https://example.com';
  }
}

缓存控制头

有一个默认设置来设置所有文件类型的缓存控制头最大年龄。如果您想使用特殊的缓存头,可以使用此钩子

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['aus_driver_amazon_s3']['getCacheControl'][] = 'Vendor\ExtensionName\Hooks\AmazonS3DriverHook->getCacheControl';

您可以根据需要修改“cacheControl”参数。请注意:AWS S3在上传/创建或复制文件时仅设置一次缓存头。

更多

如果您想使用其他钩子 - 不要害羞:GitHub问题跟踪:Amazon S3 FAL驱动程序