Amazon S3 解析器
AmazonS3Resolver
解析器启用使用 \AmazonS3
存储 API 进行缓存解析。
已弃用,请使用 aws-s3 解析器代替。 遗留的 AmazonS3Resolver 将在版本 3 中移除。
配置
首先,你必须将你的 Amazon 密钥、secret 和 bucket 分配给它们各自的参数。
1 2 3 4 5 6
# app/config/config.yml or app/config/parameters.yml
parameters:
amazon_s3.key: "your-aws-key"
amazon_s3.secret: "your-aws-secret"
amazon_s3.bucket: "your-bucket.example.com"
注意
为了不混淆缓存解析器,请使用 bucket.domain.tld
符号。在路径中指定 bucket (domain.tld/bucket
) 不起作用。
先决条件
接下来,你必须定义需要的服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# app/config/services.yml
services:
acme.imagine.cache.resolver.amazon_s3:
class: Liip\ImagineBundle\Imagine\Cache\Resolver\AmazonS3Resolver
arguments:
- "@acme.amazon_s3"
- "%amazon_s3.bucket%"
tags:
- { name: "liip_imagine.cache.resolver", resolver: "amazon_s3" }
acme.amazon_s3:
class: AmazonS3
arguments:
-
key: "%amazon_s3.key%"
secret: "%amazon_s3.secret%"
用法
配置 AmazonS3Resolver
后,你可以使用以下配置将其设置为 LiipImagineBundle
的默认缓存解析器。
1 2 3 4
# app/config/config.yml
liip_imagine:
cache: amazon_s3
在特定过滤器上的用法
或者,你可以使用以下配置将 AmazonS3Resolver
设置为特定过滤器集的缓存解析器。
1 2 3 4 5 6 7 8 9
# app/config/config.yml
liip_imagine:
filter_sets:
cache: ~
my_thumb:
cache: amazon_s3
filters:
# the filter list
提示
如果你想为其他图片使用其他 bucket,只需更改参数名称并创建额外的服务。
对象 URL 选项
为了使用对象 URL 选项,你可以简单地添加一个对服务的调用,来修改你需要的那些选项。
1 2 3 4 5 6 7 8 9 10 11 12 13
# app/config/services.yml
services:
acme.imagine.cache.resolver.amazon_s3:
class: Liip\ImagineBundle\Imagine\Cache\Resolver\AmazonS3Resolver
arguments:
- "@acme.amazon_s3"
- "%amazon_s3.bucket%"
calls:
# This calls $service->setObjectUrlOption('https', true);
- [ setObjectUrlOption, [ 'https', true ] ]
tags:
- { name: "liip_imagine.cache.resolver", resolver: "amazon_s3" }
你也可以使用解析器的构造函数来直接注入多个选项。
1 2 3 4 5 6 7 8 9 10 11 12
# app/config/services.yml
services:
acme.imagine.cache.resolver.amazon_s3:
class: Liip\ImagineBundle\Imagine\Cache\Resolver\AmazonS3Resolver
arguments:
- "@acme.amazon_s3"
- "%amazon_s3.bucket%"
- "public-read" # AmazonS3::ACL_PUBLIC (default)
- { https: true, torrent: true }
tags:
- { name: "liip_imagine.cache.resolver", resolver: "amazon_s3" }
这项工作,包括代码示例,是在 Creative Commons BY-SA 3.0 许可协议下许可的。