AWS S3解析器

编辑本页

AWS S3解析器

AwsS3Resolver缓存解析器使用Amazon S3Aws \ S3 \ S3Client

依赖关系

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

1
$ composer需要aws/aws-sdk-php

配置

首先,必须将AWS密钥、秘密、存储桶和区域分配给各自的参数。

1 2 3 4 5 6 7 8
# app / config / config.ymlor app/config/parameters.yml参数:amazon.s3.key:“your-aws-key”amazon.s3.secret:“your-aws-secret”amazon.s3.bucket:“your-bucket.example.com”amazon.s3.region:“your-bucket-region”amazon.s3.version:“2006-03-01”

请注意

为了不混淆缓存解析器,请使用bucket.domain.tld符号。指定路径中的桶(domain.tld /桶)不工作。

先决条件

从工厂创建解析器

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# app / config / config.ymlliip_imagine:解析器:aws_s3_resolver:aws_s3:client_config:凭证:关键:“% amazon.s3.key %”秘密:“% amazon.s3.secret %”地区:“% amazon.s3.region %”版本:“% amazon.s3.version %”桶:“% amazon.s3.bucket %”get_options:方案:httpsput_options:CacheControl:“信息= 86400”

提示

如果使用aws-sdk-php<3.0.0,则必须省略凭证键,而不是放置关键而且秘密键在同一级别地区而且

1 2 3 4 5 6 7 8 9
# app / config / services.yml服务:aws_s3:client_config:关键:“% amazon.s3.key %”秘密:“% amazon.s3.secret %”地区:“% amazon.s3.region %”桶:“% amazon.s3.bucket %”

将解析器创建为服务

虽然使用上面的配置通过工厂创建解析器可以完成大多数用例的工作,但有时有必要将解析器创建为服务。

提示

例如,如果您不想为解析器硬编码AWS凭据,而是让它使用默认凭证提供程序链在AWS内(例如,因为您在EC2实例上运行,该实例已经附加到具有所需权限的IAM角色)。在这种情况下,简单地通过工厂配置块设置解析器并忽略凭据块是不能解决问题的。相反,您需要将解析器设置为一个服务,如下所示,并传递一个S3Client。

你必须设置所需的服务:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# app / config / services.yml服务:acme.amazon_s3:类:Aws \ S3 \ S3Client工厂:Aws \ S3 \ [S3Client,工厂)参数:-凭证:关键:“% amazon.s3.key %”,秘密:“% amazon.s3.secret %”地区:“% amazon.s3.region %”版本:“% amazon.s3.version %”acme.imagine.cache.resolver.aws_s3_resolver:类:Liip \ ImagineBundle \想象\ \解析器\ AwsS3Resolver缓存参数:-“@acme.amazon_s3”-“% amazon.s3.bucket %”标签:-名称:“liip_imagine.cache.resolver”,解析器:“aws_s3_resolver”

提示

如果使用aws-sdk-php<3.0.0,则必须省略凭证键,而不是放置关键而且秘密键在同一级别地区而且

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# app / config / services.yml服务:acme.amazon_s3:#……参数:-关键:“% amazon.s3.key %”秘密:“% amazon.s3.secret %”地区:“% amazon.s3.region %”acme.amazon_s3:类:Aws \ S3 \ S3Client工厂:Aws \ S3 \ [S3Client,工厂)参数:-凭证:关键:“% amazon.s3.key %”,秘密:“% amazon.s3.secret %”地区:“% amazon.s3.region %”版本:“% amazon.s3.version %”

使用

配置后AwsS3Resolver,您可以将其设置为默认的缓存解析器LiipImagineBundle使用如下配置:

1 2 3 4
# app / config / config.ymlliip_imagine:缓存:aws_s3_resolver

在特定过滤器上的使用

或者,您可以设置AmazonS3Resolver作为特定筛选器集的缓存解析器,使用以下配置。

1 2 3 4 5 6 7 8 9
# app / config / config.ymlliip_imagine:filter_sets:缓存:my_thumb:缓存:aws_s3_resolver过滤器:#过滤器列表

提示

如果要为其他映像使用其他bucket,只需更改参数名称并创建其他服务。

附加选项

你可以使用缓存而且代理带电流的链中的解析器。您只需要使用已定义的选项来配置它们。

1 2 3 4 5 6 7 8 9
# app / config / config.ymlliip_imagine:解析器:aws_s3_resolver:aws_s3:#……代理:[" http://one.domain.com ",“http://two.domain.com”缓存:真正的

如果启用,第一个将是缓存,然后代理之后,所有进程委托给AwsS3解析器。

对象GET选项

为了使用对象GET选项,您可以简单地向服务添加一个调用,以更改所需的那些选项。

12 3 4 5 6 7 8 9 10 11 12 13
# app / config / services.yml服务:acme.imagine.cache.resolver.aws_s3_resolver:类:Liip \ ImagineBundle \想象\ \解析器\ AwsS3Resolver缓存参数:-“@acme.amazon_s3”-“% amazon_s3.bucket %”电话:#调用$service->setGetOption('Scheme', 'https');-setGetOption,计划,https标签:-名称:“liip_imagine.cache.resolver”,解析器:“aws_s3_resolver”

您还可以使用解析器的构造函数直接注入多个选项。

12 3 4 5 6 7 8 9 10 11 12
# app / config / services.yml服务:acme.imagine.cache.resolver.aws_s3_resolver:类:Liip \ ImagineBundle \想象\ \解析器\ AwsS3Resolver缓存参数:-“@acme.amazon_s3”-“% amazon_s3.bucket %”-“公有可读”# Aws\S3\Enum\CannedAcl::PUBLIC_READ(默认)-方案:https标签:-名称:“liip_imagine.cache.resolver”,解析器:“aws_s3_resolver”

对象PUT选项

与对象GET选项类似,您可以配置在存储对象时传递给S3的附加选项。这是有用的,例如,配置缓存控制头返回时,服务对象从S3。看到S3 SDK文欧宝官网下载app档获取可用选项的列表。

注意,以下选项是自动配置的,将被忽略,即使你通过ObjectOptions配置它:

  • ACL
  • 关键
  • 身体
  • ContentType

为了使用对象PUT选项,您可以简单地向服务添加一个调用,以更改所需的那些选项。

12 3 4 5 6 7 8 9 10 11 12 13
# app / config / services.yml服务:acme.imagine.cache.resolver.aws_s3_resolver:类:Liip \ ImagineBundle \想象\ \解析器\ AwsS3Resolver缓存参数:-“@acme.amazon_s3”-“% amazon_s3.bucket %”电话:$service->setPutOption('CacheControl', 'max-age=86400');-setPutOption,CacheControl,“信息= 86400”标签:-名称:“liip_imagine.cache.resolver”,解析器:“aws_s3_resolver”

您还可以使用解析器的构造函数直接注入多个选项。

12 3 4 5 6 7 8 9 10 11 12 13
# app / config / services.yml服务:acme.imagine.cache.resolver.aws_s3_resolver:类:Liip \ ImagineBundle \想象\ \解析器\ AwsS3Resolver缓存参数:-“@acme.amazon_s3”-“% amazon_s3.bucket %”-“公有可读”# Aws\S3\Enum\CannedAcl::PUBLIC_READ(默认)-方案:https-CacheControl:“信息= 86400”标签:-名称:“liip_imagine.cache.resolver”,解析器:“aws_s3_resolver”
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。