如何为S3media URL策略实施Cloudfront

2020-08-31 19:55发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我已经为我的内容配置了S3媒体存...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我已经为我的内容配置了S3媒体存储策略。 在s3中初始化其生成的数据。 现在如何为S3媒体网址策略实现Cloudfront? 这样我的内容就可以从Cloudfront投放。

2条回答
Tong__Ming
2020-08-31 20:37

实施CloudFront URL策略非常容易。 设置Hybris以正常方式使用S3媒体存储,并根据需要将CloudFront分发配置为通过签名或未签名的URL来提供存储桶的内容。

然后,您需要编写一个新的自定义类-CloudFrontMediaUrlStrategy。 如果您不需要签名的URL,则代码应该非常简单:

字符串distributionDomain = config.getParameter(" url.domain");
 最终的字符串位置= HttpUtils.urlEncode(media.getLocation(),true);
 url =" https://" + distributionDomain +"/" +位置;
 返回网址; 

然后您可以像这样配置存储桶:

(...这里通常的S3媒体存储属性...)
 media.folder.myfolder.url.strategy = cloudFrontMediaURLStrategy
 media.folder.myfolder.url.domain = mydistribution.cloudfront.net
 media.folder.myfolder.url.signed = false
 

如果您需要签名的URL,那就更麻烦了。 向您的自定义扩展添加依赖项到AWS Java SDK-CloudFront组件:

 
     com.amazonaws 
     aws-java-sdk-cloudfront 
     $ {aws.version} 
  

(对于我的Hybris版本,我使用了与amazoncloud扩展名相同的aws.version)

然后,您基本上需要调用CloudFrontUrlSigner.getSignedURLWithCannedPolicy()(如果需要自定义策略,则可以调用其他功能之一)以生成URL。 查看API文档以了解更多信息。

您需要在存储桶配置中添加一些额外的参数,以便获得必要的信息,并从URL策略类中访问这些参数:

 media.folder.myfolder.url.signed = true
 media.folder.myfolder.url.signed.keypair = mycloudfrontkeypairid
 media.folder.myfolder.url.signed.keyfile =/path/to/cloudfront/signer/private/key.pem
 media.folder.myfolder.url.signed.validFor = 30#该网址有效的时间(以分钟为单位)
 

请注意6.7之前的url.signed.validFor属性存在错误-您需要在Spring配置中实施小修正或使用其他属性名称。

一周热门 更多>