跳到内容

Amazon S3 解析器

编辑此页

AmazonS3Resolver 解析器启用使用 \AmazonS3 存储 API 进行缓存解析。

已弃用,请使用 aws-s3 解析器代替。 遗留的 AmazonS3Resolver 将在版本 3 中移除。

依赖

此缓存解析器需要 aws-sdk-php 库,可以通过在项目目录下执行以下命令安装

1
composer require aws/aws-sdk-php

配置

首先,你必须将你的 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 许可协议下许可的。
目录
    版本